温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mybatis中如何使用plugin插件

发布时间:2021-07-30 15:15:17 来源:亿速云 阅读:351 作者:Leah 栏目:大数据

这期内容当中小编将会给大家带来有关mybatis中如何使用plugin插件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

mybatis插件

mybatis源码写的极好,mybatis属于相对轻量级的orm框架,包含的功能并没有太多,较容易感受它的设计之美,所以用博客的方式进行记录;


mybatis插件在四处有使用到:mybatis中如何使用plugin插件

  1. 对sql入参 prameterHandler进行插件化处理

  2. 对sql出参result进行插件化处理

  3. 对stamentHandler进行插件化处理

  4. 对executor进行插件化处理;


mybatis的插件与平时所熟知的拦截器和过滤器类似,但设计并不相同,譬如:

  1. springmvc的HandlerInterceptor接口:拦截器实现类功能比较单一,并不参与调用链的调度,比较简单的一组接口的实现类;

  2. 过滤器:- 责任链模式,每个filter处理的时候入参中有chain对象,在执行完filter中的before后将控制权再交回给chain,由chain进行调度下一个before;然后调用链如图: mybatis中如何使用plugin插件


  • mybatis中的插件实现了Interceptor接口,其实现的方式属于装饰器模式; mybatis中如何使用plugin插件

  • 将执行插件的target交给插件,插件返回一个代理对象;将该代理对象传给下一个插件,进行装饰

    mybatis中如何使用plugin插件

  • 引入Plugin对象,将target和插件this传给Plugin


  • 对target进行包装,将插件功能包装在代理对象中 mybatis中如何使用plugin插件

  • 对target进行包装,通过cglib对target进行代理;

  • 传入的InvocationHandler是Plugin本身; mybatis中如何使用plugin插件

  • 当调用target方法时,进入Plugin中的invoke方法; mybatis中如何使用plugin插件

  • 这时才真正的对target方法有选择性的调用拦截器;

  • 而拦截器中的实现只需要关注拦截逻辑的处理,因为target中的方法调用交给Invocation对象中调用;

    mybatis中如何使用plugin插件

mybatis设计的插件,可以通过注解的方式指定某个类的某个方法进行拦截;这样的设计方式通过注解可以无侵入式的对目标类进行代理,同时可以针对同一个类进行多次代理;非常灵活

单拿出mybatis中的插件进行表述的原因是,感觉设计的还是很有意思的;扩展性很好,同时有别于其它的拦截器和过滤器的实现;

上述就是小编为大家分享的mybatis中如何使用plugin插件了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI