MyBatis进阶版(四)

2020-10-17  本文已影响0人  一人有一个架构师梦想

目录
1.掌握插件的使用方法和工作原理
2.掌握自定义插件的编写方法
3.掌握Spring集成MyBatis的原理

一、插件
1.使用3个步骤:
1)实现Interceptor接口,现实相应的方法,重写逻辑
2)拦截器类加上注解。注解指定拦截对象/方法/参数
3)在mybatis-config.xml中注册插件,配置属性

2.原理
1)流程:MyBatis启动时扫描<plugins>标签,注册到Configuration对象的InterceptorChain中,它是一个List。
2)设计模式:插件的作用是对如处理参数,SQL,处理结果等方法做增强,底层采用代理模式实现。所有插件保存在List里面,采用责任链模式,逐个执行。
3)实现原理
a.创建时间:openSession()
b.怎么创建:InterceptorChain的pluginAll()方法,遍历InterceptorChain,使用实现类的plugin()方法,对目标核心对象进行代理。
4)配置顺序和执行顺序
插件定义顺序:1,2,3
代理顺序:1,2,3
代理执行顺序:3,2,1 因为(invoke())
5)应用场景


3种应用场景 拦截的4种对象

二.PageHelper

物理分页
PageHelper.startPage(page, pageSize);
List<OrderInfo> list = orderMapper.selectAllOrders();
PageInfo<OrderInfo> pageInfo = new PageInfo<>(list);

1)分页信息放到ThreadLocal
2)从ThreadLocal拿到分页信息,根据SQL方言选择分页语法,通过StringBuilder拼接SQL,达到物理分页的目的

三.与Spring整合分析
1.引入mybatis-spring。不是spring-mybatis,是因为它是MyBatis利用Spring的接口开发的。


Spring扩展点

具体过程很复杂。以后慢慢研究。
主要是在Spring配置指定SqlSessionFactory和扫描包,把它们交由Spring初始化,然后注入到容器。

上一篇下一篇

猜你喜欢

热点阅读