mybatis是一款优秀的ORM开源框架,这个框架具有极强的灵活性,本文再次给大家介绍Mybatis 插件原理,感兴趣的朋友一起看看吧
mybatis是一款优秀的ORM开源框架,这个框架具有极强的灵活性,本文再次给大家介绍Mybatis 插件原理,感兴趣的朋友一起看看吧
mybatis是一款优秀的ORM开源框架,这个框架具有极强的灵活性,本文再次给大家介绍Mybatis 插件原理,感兴趣的朋友一起看看吧
Mybati s作为⼀个应⽤⼴泛的优秀的ORM开源框架,这个框架具有强⼤的灵活性,在四⼤组件
(Executor、StatementHandler、ParameterHandler、ResultSetHandler)处提供了简单易⽤的插 件扩展机制。
Mybatis对持久层的操作就是借助于四⼤核⼼对象。MyBatis⽀持⽤插件对四⼤核⼼对象进 ⾏拦截,对mybatis来说
插件就是拦截器,⽤来增强核⼼对象的功能,增强功能本质上是借助于底层的 动态代理实现的,换句话说,
MyBatis中的四⼤对象都是代理对象

MyBatis所允许拦截的⽅法如下:
在四⼤对象创建的时候
创建出代理对象,代理对象就可以拦截到四⼤对象的每⼀个执⾏;
自定义插件拦截:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
Intercepts ({//注意看这个⼤花括号,也就这说这⾥可以定义多个@Signature对多个地⽅拦截,都⽤这个拦截器@Signature (type = StatementHandler .class , //这是指拦截哪个接⼝method = "prepare",//这个接⼝内的哪个⽅法名,不要拼错了args = { Connection.class, Integer .class}), 这是拦截的⽅法的⼊参,按顺序写到这,不要多也不要少,如果⽅法重载,可是要通过⽅法名和⼊参来确定唯⼀的})public class MyPlugin implements Interceptor {private final Logger logger = LoggerFactory.getLogger(this.getClass());// //这⾥是每次执⾏操作的时候,都会进⾏这个拦截器的⽅法内Overridepublic Object intercept(Invocation invocation) throws Throwable {//增强逻辑System.out.println("对⽅法进⾏了增强....");return invocation.proceed(); //执⾏原⽅法}/*** //主要是为了把这个拦截器⽣成⼀个代理放到拦截器链中* ^Description包装⽬标对象 为⽬标对象创建代理对象* @Param target为要拦截的对象* @Return代理对象*/Overridepublic Object plugin(Object target) {System.out.println("将要包装的⽬标对象:"+target);return Plugin.wrap(target,this); }/**获取配置⽂件的属性**///插件初始化的时候调⽤,也只调⽤⼀次,插件配置的属性从这⾥设置进来Overridepublic void setProperties(Properties properties) {System.out.println("插件配置的初始化参数:"+properties );} } |
到此这篇关于Mybatis 插件原理解析的文章就介绍到这了,更多相关Mybatis 插件原理内容请搜索米米素材网以前的文章或继续浏览下面的相关文章希望大家以后多多支持米米素材网!
原文链接:https://blog.csdn.net/weixin_43726822/article/details/120712662
发表评论