一、mybatis的插件介绍
关于mybatis的插件,我想大家也都用过,就比如最常用的逆向工程,根据表结构生成model,dao,xml文件,还有分页插件,那这些插件的工作原理是怎么样的呢,就比如分页插件,它为什么能改变我们在xml文件中写的sql语句,本文将带大家一起来了解mybatis的插件机制。(由于本人也是在不断学习,文中难免有错误或不足之处,还望指正,本文基于mybatis3.3.0版本),下面将围绕这几个方面
1、插件入口,即怎么把插件注入到mybatis代码里面
2、插件能拦截哪些类或哪些方法
3、举例简易分表插件
二、插件入口在先了解前,我们来一段自定义mybatis插件的代码
1 import org.apache.ibatis.executor.statement.StatementHandler; 2 import org.apache.ibatis.plugin.*; 3 4 import java.sql.Connection; 5 import java.util.Properties; 6 7 @Intercepts( 8 value = { 9 @Signature( 10 type = StatementHandler.class, 11 method = "prepare", 12 args = {Connection.class} // 不同版本的prepare方法参数不一样,高版本的还有一个Integer参数 13 ) 14 } 15 ) 16 public class PluginDemo implements Interceptor { 17 @Override 18 public Object intercept(Invocation invocation) throws Throwable { 19 return invocation.proceed(); 20 } 21 22 @Override 23 public Object plugin(Object target) { 24 return Plugin.wrap(target,this); 25 } 26 27 @Override 28 public void setProperties(Properties properties) { 29 30 }