Mybatis插件

发布于 2021-03-29  473 次阅读


Mybatis作为一个优秀的ORM插件有很强大的灵活性,通过插件可以很方便地扩展Mybatis的功能。
Mybatis的插件相当于拦截器,是使用JAVA动态代理来实现的。Mybatis对持久层的操作借助于四大组件(Executor,StatementHandler,ParameterHandler,ResultSetHandler)。在创建这四类对象时会判断是否有配置好的插件,若是有则返回被插件代理的动态代理对象。在执行这四类对象的方法时,先判断执行的方法是否是需要代理的方法,如果是则执行插件类的增强方法。在四大对象创建的时候:

在Mybatis中每个创建出来的对象并不是直接返回的,而是获取所有的拦截器interceptor.plugin(target);

在获取到所有的Interceptor(插件需要实现的接口)后;调用interceptor.plugin(target);返回target包装后的对象;

插件机制,我们可以使用插件为目标对象创建一个代理对象;aop(面向切面)我们的插件可以认为是四大对象创建出代理对象,代理对象就可以拦截到四大对象的每一个执行。

插件原理分析及案例:

转载:https://blog.csdn.net/Gaomb_1990/article/details/80642413?utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control&dist_request_id=1328740.40181.16170084792281853&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control

使用场景及机制:

转载: https://www.cnblogs.com/chenpi/p/10498921.html

 

四大对象核心概念:https://blog.csdn.net/weixin_39494923/article/details/91534658?utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control

 

插件原理和应用:https://blog.csdn.net/ykzhen2015/article/details/50349540


她喜欢所以就做咯