目录
SSM
Mybatis
Map
- 执行的sql需要的参数很多,前端传递后端,后端接收,之后在方法中封装为一个Map对象,最后.xml文件中通过Map对象中的key来取值
核心配置文件
- 引入连接数据库的配置文件
- 开启日志
- 开启二级缓存(之后需要在.xml配置文件中的命名空间进行配置)
- 绑定注册XxMapper.xml配置文件(三种方式)
SqlSession
- SqlSessionFactoryBuilder
- SqlSessionFactory
- SqlSession(一级缓存,作用范围有限,而且线程不安全使用完之后需要立即关闭)
ResultMap
- 问题引入:解决实体类属性名和对应的数据表字段名不一致的问题
- 解决方式:去别名(通过sql语句的as关键字)、resultMap结果集映射
RowBounds分页
- 不需要导入任何依赖,只需要new一个对象设置相应参数即可
Mybatis详细执行流程
-
调用Resources的静态方法来加载Mybatis的核心配置文件:mybatis-config.xml
-
实例化SqlSessionFactoryBuilder来解析配置文件流,获取文件的配置信息,创建SqlSessionFactory工厂实例
-
创建Transactional事务管理器和executor执行器
-
通过调用SqlSessionFactory接口对象中的openSesson方法获取SqlSession对象
-
调用SqlSession的getMapper方法获取业务接口对象
-
调用业务接口对象中的方法进行CRUD
-
关闭SqlSession
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GGWGNsa3-1666268778695)(…/Mybatis/Mybatis执行过程/执行流程解析.png)]
ResultMap
多对一(多名学生对应一名老师)
- 按照结果嵌套
- 按照查询嵌套
一对多(一个老师对应多么学生)
- 按照结果嵌套
- 按照查询嵌套
Mybatis缓存
- 一级缓存:SqlSession,作用范围有限,与数据库同一会话期间查询的数据会放到一级缓存中,而且SqlSession不安全,需要及时关闭(注意:一级缓存是默认开启的,相当于一个Map)
- 二级缓存:需要在Mybatis的核心配置文件中打开,之后需要在每个需要开启缓存的.xml文件中开启(一个XxMapper.xml配置文件一个二级缓存,namespace级别)
动态SQL
Spring
控制反转(IOC)
IOC创建对象的方式
- 无参构造(默认)
- 有参构造(结合.xml配置文件)
DI依赖注入
为创建的对象注入属性值
- set方式注入(结合.xml配置文件)
- 拓展注入(c、p命名空间,结合.xml配置文件)
注解代替Bean对象创建和依赖注入
- @Component
- @Value
Bean的自动装配(getBean)
- @Autowired注解:先byType,后byName
- @Resource注解:先byName,后byType
面向切面编程(AOP)
- 静态代理(租户-中介-房东)
SpringMVC
SpringMVC的执行流程
- 用户在前端发送请求
- SpringMVC的核心DispatcherServlet前端控制器,拦截用户发送的请求进行处理
- 前端控制器根据拦截地请求通过处理器映射器来匹配对应的处理器Handler
- 找到对应的处理器之后将相关信息返回给前端控制器
- 前端控制器再通过处理器适配器根据特定规则来执行处理器中的控制方法,访问数据库,返回模型数据
- 将模型数据返回给前端控制器,前端控制器再根据试图解析器对模型数据进行解析,将解析视图结果返回给前端控制器
- 前端控制器根据返回结果调用相应视图返回给前端
@RequestParam
- 解决前端向后端提交的参数与后端方法接收的参数不一致的问题