美文网首页
MyBatis进阶版(四)

MyBatis进阶版(四)

作者: 一人有一个架构师梦想 | 来源:发表于2020-10-17 22:18 被阅读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初始化,然后注入到容器。

    相关文章

      网友评论

          本文标题:MyBatis进阶版(四)

          本文链接:https://www.haomeiwen.com/subject/npkfmktx.html