美文网首页
MyBatis插件的使用及其原理

MyBatis插件的使用及其原理

作者: 抬头挺胸才算活着 | 来源:发表于2022-01-08 21:37 被阅读0次
    • 插件介绍
      插件本质上是拦截器,实现原理是动态代理,多个拦截还涉及到责任链设计模式。
      ParameterHandler:处理SQL的参数对象
      ResultSetHandler:处理SQL的返回结果集
      StatementHandler:数据库的处理对象,用于执行SQL语句
      Executor:MyBatis的执行器,用于执行增删改查操作


    • 插件使用
      1、定义一个拦截器,注解上标明要拦截的类和方法
      1.1 写上拦截的步骤



      1.2 ⽣成target的代理对象



      1.3 获取配置
    • 插件原理
      原理:
      MyBatis定义了拦截器对下面的四个类进行拦截(增强),拦截的方式是动态代理。
      执⾏器Executor (update、query、commit、rollback等⽅法);
      SQL语法构建器StatementHandler (prepare、parameterize、batch、updates query等⽅ 法);
      参数处理器ParameterHandler (getParameterObject、setParameters⽅法);
      结果集处理器ResultSetHandler (handleResultSets、handleOutputParameters等⽅法)



      以ParameterHandler为例,创建的时候对其调用pluginAll方法,依次调用每个拦截器的plugin返回代理后的对象。最后执行的时候看这个代理对象有没有拦截器,有就代理对象的方法,代理对象方法一般会先执行完自己的逻辑,再执行默认方法,没有就只执行原来的方法。


    相关文章

      网友评论

          本文标题:MyBatis插件的使用及其原理

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