mybatis 自定義外掛

chang_hf發表於2020-10-03

mybatis外掛擴充套件機制

我們可以基於mybatis外掛機制實現分頁、分表、監控等功能,mybatis四大元件包括Executor、StatementHandler、ParameterHandler、ResultSetHandler,他們提供了簡單易用的外掛擴充套件機制。
外掛擴充套件需兩步:

  • 1、實現Interceptor
/**
 * 通過Intercepts和Signature兩個註解,定義外掛攔截哪個核心物件裡的哪個方法
 */
@Intercepts({
        @Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})
})
public class MyPlugin implements Interceptor {

    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        System.out.println("---------增強邏輯-------------");
        return invocation.proceed();
    }

    /**
     * 把當前攔截器生成代理加入到攔截器鏈
     *
     * @param target
     * @return
     */
    @Override
    public Object plugin(Object target) {

        return Plugin.wrap(target, this);
    }

    @Override
    public void setProperties(Properties properties) {
        System.out.println("-------------獲取配置檔案-------------");
    }
}
  • 2、修改核心配置檔案
<plugins>    
	<plugin interceptor="com.plugin.MySqlPagingPlugin">
		<!--配置引數-->
		<property name="name" value="Bob"/>
	</plugin>
 </plugins>

自定義分頁外掛

MyBatis可以使用第三方的外掛來對功能進行擴充套件,只需匯入相關包,修改配置檔案即可

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.0</version>
</dependency>
<dependency>
    <groupId>com.github.jsqlparser</groupId>
    <artifactId>jsqlparser</artifactId>
    <version>3.2</version>
</dependency>

<!--注意:分頁助手的外掛配置在通用館mapper之前*-->*    
<plugin interceptor="com.github.pagehelper.PageHelper">        
	<!—指定方言 —>        
	<property name="dialect" value="mysql"/>
</plugin>

相關文章