mybatis的插件分析

mybatis插件回在解析配置是通过pluginAll方法将插件添加到插件链中,然后会在sqlSessionfactory.openSession()方法中将插件链绑到executor上,在执行sql的时候回拦截具体方法后,通过代理类来进行具体处理。

官方文档:http://www.mybatis.org/mybatis-3/zh/configuration.html#plugins

通过 MyBatis 提供的强大机制,使用插件是非常简单的,只需实现 Interceptor 接口,并指定想要拦截的方法签名即可

官方例子

// ExamplePlugin.java
@Intercepts({@Signature(type= Executor.class,method = "update",args = {MappedStatement.class,Object.class})})
public class ExamplePlugin implements Interceptor {public Object intercept(Invocation invocation) throws Throwable {return invocation.proceed();}public Object plugin(Object target) {return Plugin.wrap(target, this);}public void setProperties(Properties properties) {}
}<!-- mybatis-config.xml -->
<plugins><plugin interceptor="org.mybatis.example.ExamplePlugin"><property name="someProperty" value="100"/></plugin>
</plugins>

上面的插件将会拦截在 Executor 实例中所有的 “update” 方法调用, 这里的 Executor 是负责执行低层映射语句的内部对象

步骤:

1、实现interceptor接口

2、在自定义plugin上配置注解@Intercepts

  注解配置:@Intercepts({ @Signature(type = Executor.class, method = "query", args = { MappedStatement.class, Object.class,RowBounds.class, ResultHandler.class }) })

  type:Executor、StatementHandler、ParameterHandler、ResultsetHandler四个接口

  method:以上四个接口中的方法

  args:以上方法中的参数

3、mybatis.xml中配置标签<plugin><>

原理思想分析可参考:https://blog.csdn.net/reliveit/article/details/50289395

posted @ 2018-06-07 12:18 犇犇丶 阅读(...) 评论(...) 编辑 收藏

mybatis的插件分析相关推荐

  1. MyBatis 源码分析 - 插件机制

    1.简介 一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展.这样的好处是显而易见的,一是增加了框架的灵活性.二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作.以 My ...

  2. MyBatis 源码分析系列文章合集

    1.简介 我从七月份开始阅读MyBatis源码,并在随后的40天内陆续更新了7篇文章.起初,我只是打算通过博客的形式进行分享.但在写作的过程中,发现要分析的代码太多,以至于文章篇幅特别大.在这7篇文章 ...

  3. MyBatis 源码分析 - 缓存原理

    1.简介 在 Web 应用中,缓存是必不可少的组件.通常我们都会用 Redis 或 memcached 等缓存中间件,拦截大量奔向数据库的请求,减轻数据库压力.作为一个重要的组件,MyBatis 自然 ...

  4. MyBatis 源码分析 - 内置数据源

    1.简介 本篇文章将向大家介绍 MyBatis 内置数据源的实现逻辑.搞懂这些数据源的实现,可使大家对数据源有更深入的认识.同时在配置这些数据源时,也会更清楚每种属性的意义和用途.因此,如果大家想知其 ...

  5. MyBatis 源码分析 - SQL 的执行过程

    本文速览 本篇文章较为详细的介绍了 MyBatis 执行 SQL 的过程.该过程本身比较复杂,牵涉到的技术点比较多.包括但不限于 Mapper 接口代理类的生成.接口方法的解析.SQL 语句的解析.运 ...

  6. MyBatis 源码分析 - 映射文件解析过程

    1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程.由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因.所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来, ...

  7. MyBatis 源码分析系列文章导读

    1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章.本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说 ...

  8. MyBatis 源码分析-技术分享

    2019独角兽企业重金招聘Python工程师标准>>> MyBatis 源码分析 MyBatis的主要成员 Configuration MyBatis所有的配置信息都保存在Confi ...

  9. (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示

    http://blog.csdn.net/yerenyuan_pku/article/details/72774381 上文我们实现了展示后台页面的功能,而本文我们实现的主要功能是展示商品列表,大家要 ...

最新文章

  1. java序列化库_java 中序列化(Serializable)
  2. php+yii手册下载,yii中文手册-yii框架中文手册教程下载pdf格式免费版-东坡下载
  3. MS Chart 学习心得
  4. 机器学习中用到的概率知识_机器学习中有关概率论知识的小结
  5. ASP.NET状态管理
  6. android10 内部存储,Android的内部存储和外部存储
  7. 运动会管理系统论文java_java+ssh+mysql大学运动会管理系统(源码+论文+任务书+ppt)...
  8. 关于xendesktop外部SQL数据库连接设置的问题
  9. 运筹学——线性规划及单纯形法求解
  10. git 暂存本地修改的文件
  11. 智鹰科技——无人机线路巡检系统商业计划书
  12. 调查问卷的JSON模板设计与分数计算的Java实现
  13. asp毕业设计—— 基于asp+access的网上购物系统设计与实现(毕业论文+程序源码)——网上购物系统
  14. CNN结构:色温-冷暖色的定义和领域区分(一)
  15. pl/sql Developer 1303注册码
  16. 明星玩跨界,全民娱乐时代来临!
  17. 域名系统的解析过程 域名解析多久可以生效
  18. 高通不行了? 骁龙835排出前三, 国产处理器崛起, A11当老大
  19. Mysql复习资料整理
  20. jQuery选择器之类选择器

热门文章

  1. amd cpu排行_【每日热点】长盈精密成功开发纽扣电池壳体组件;AMD处理器全球份额有望达到20%;英伟达承诺将ARM总部留在英国...
  2. golang插入字符串_golang 几种字符串的连接方式
  3. linux lnmp分布式集群,LNMP 分布式集群(六):keepalived 高可用方案
  4. macos 安装python3.8 版本_用python安装cutadapt程序
  5. makefile文件编写_九图记住Makefile
  6. 系统接口对接的进度工作应该谁来干_项目的交付进度总是延迟,项目经理找了很久才发现是这4类原因...
  7. 【sprinb-boot】@ComponentScan 跳过扫描 excludeFilters
  8. Vuex的store中的Module
  9. linux ping策略打开_linux ping策略打开_如何在Linux服务器禁止和开启ping包 互联网技术圈 互联网技术圈......
  10. keras冻结_[开发技巧]·keras如何冻结网络层