Java框架note


title: Java框架note
toc: true
comments: true
abbrlink: a16861fc
date: 2021-08-01 15:52:27
tags: Java
categories:

这里记录的是对后端框架的学习 !

chpt01 MyBatis

SSM:Spring、SpringMVC、MyBatis

MyBatis: iBatis

> 持久化
    1. IO
    2. JDBC
    3. ORM

> ORM: Object Relation Mapping,对象关系映射
        类 :Student          表:xsb
     属性:name        字段:name
        age             age
        sex             sex

        对象          数据记录

> 使用mybatis的步骤:
    1、导入 mybatis.jar 包
    2、管理 mybatis.xml 配置文件
    3、写 mapper.xml
    4、java代码编写(获取session),进行CRUD操作

    ps: mybatis 使用方式:
        1. 纯xml方式
        2. xml + 接口 的方式
        3. 注解 + 接口 的方式
        ps: 注解 + xml + 接口 方式

> mybatis 缓存
    缓存:查询出来的数据被暂存在内存,以备后续查询使用。

    一级缓存:session级缓存。
        发生在同一个会话(sqlSession)里面的sql查询,如果后续的查询与第一次查询完全相同(SQL语句一样),则后续的查询会直接从缓存里面获取数据,而不是进行数据库查询。sqlSession一旦关闭,缓存数据便会被清空。

    二级缓存:全局缓存(namespace级缓存)。
        1. 全局缓存的作用域是针对Mapper的namespace而言的,也就是说只在有在当前namespace内的查询才能共享这个cache
        2. 如果在sqlSession关闭之前处理加工过查询出来的数据,后续的查询获取的数据将是已经被加工处理过的。所以为了保证相同的查询,总能获取到原始的数据,sqlSession应在查询出原始数据后就立马关闭。

    注意:一旦发生了增、删、改操作,数据库里面的数据就意味着已经改变,查询自然应重新进行,获取新的数据;所以,一旦发生了增、删、改操作,缓存数据便会被清空。

chpt02 Spring

SSM:Spring、SpringMVC、MyBatis

> Spring
    。IOC/DI:控制反转容器/依赖注入
        IOC: 创建管理维护java bean

        1. XML注册java bean
            <bean class="test.MyDao" id="myDao" />
            DI:
                a. setter 注入
                <bean class="test.MyDao" id="myDao" />
                <bean class="test.MyService" id="myService">
                    <property name="myDao" ref="myDao" />
                </bean>

                private MyDao myDao;
                public void setMyDao(MyDao myDao) {
                    this.myDao = myDao;
                }

                b. 构造器注入
                <bean class="test.MyDao" id="myDao" />
                <bean class="test.MyService" id="myService">
                    <constructor-arg name="myDao" ref="myDao"/>
                </bean>

                private MyDao myDao;
                public MyService(MyDao myDao) {
                    this.myDao = myDao;
                }

        2. 注解注册java bean
            @Component
            <context:component-scan />
            DI:
                @Autowired

    。AOP
        AOP: Aspect Oriented Programming , 面向切面(方面)编程
            。横切任务(模式化的任务或可有可无的任务):事务控制、日志记录、异常处理
            。通知:横切逻辑
            。切入点:加入具体通知的地方
            。切面 = 通知 + 切入点

        OOP: Object Oriented Programming , 面向对象编程
            。核心任务,必不可少的功能:CRUD

chpt03 SpringMVC

> SpringMVC
    。核心:DispatcherServlet
    1. url匹配
    2. 参数的获取封装
    3. 请求转发 & 重定向
    4. Ajax数据响应
    5. 文件上传

发表评论

电子邮件地址不会被公开。 必填项已用*标注