MyBatisPlus中自定义全局操作流程
生活随笔
收集整理的這篇文章主要介紹了
MyBatisPlus中自定义全局操作流程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
項目搭建專欄:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194
什么是自定義全局操作
根據MybatisPlus的AutoSqlInjector可以自定義各種你想要的sql注入到全局中。相當于
定義MyBatisPlus自動注入的方法。
之前需要在xml中進行配置的sql語句,現在通過擴展AutoSqlInjector在加載mybatis環境時就注入。
實現
1.在Mapper接口中定義相關的方法
package com.badao.mapper;import com.badao.beans.Employee; import com.baomidou.mybatisplus.mapper.BaseMapper;/**** 泛型指定就是當前mapper接口所操作的實體類類型* @author Administrator* @Description:* @Time:2019年4月18日 下午8:36:59*/public interface EmployeeMapper extends BaseMapper<Employee> {/*** 自定義注入方法*/int deleteAll();}
2.擴展AutoSqlInjector的inject方法
項目下新建injector包,包下新建MySqlInjector
代碼:
package com.badao.injector;import org.apache.ibatis.builder.MapperBuilderAssistant; import org.apache.ibatis.mapping.SqlSource; import org.apache.ibatis.session.Configuration;import com.baomidou.mybatisplus.entity.TableInfo; import com.baomidou.mybatisplus.mapper.AutoSqlInjector;/**** 自定義全局操作* @author Administrator* @Description:* @Time:2019年4月27日 下午12:18:42*/ public class MySqlInjector extends AutoSqlInjector {/**** 擴展inject方法,完成自定義全局操作*/@Overridepublic void inject(Configuration configuration, MapperBuilderAssistant builderAssistant, Class<?> mapperClass,Class<?> modelClass, TableInfo table) {// 將EmployeeMapper中定義的deleteAll,處理成對應的MappedStatement對象,加入到configuration對象中/* 執行 SQL ,動態 SQL 參考類 SqlMethod */String sql = "delete from " + table.getTableName();/* mapper 接口方法名一致 */String method = "deleteAll";//構建SqlSource對象SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);//構造一個刪除的MapperedStastementthis.addDeleteMappedStatement(mapperClass, method, sqlSource);}}3.在MP的全局策略配置中,配置自定義注入器
定義自定義注入器
打開項目的applicationContext.xml
<!-- 定義自定義注入器 --> <bean id="mySqlInjector" class="com.badao.injector.MySqlInjector"></bean>注入自定義全局操作
找到MP的全局策略配置的地方。
<!-- 定義MybatisPlus的全局策略配置--><bean id ="globalConfiguration" class="com.baomidou.mybatisplus.entity.GlobalConfiguration"><!-- 在2.3版本以后,dbColumnUnderline 默認值就是true 開啟下劃線到駝峰命名支持--><property name="dbColumnUnderline" value="true"></property><!-- 全局的主鍵策略?? 全局使用主鍵自增的方式? value為 0--><property name="idType" value="0"></property><!-- 全局的表前綴策略配置 --><!-- <property name="tablePrefix" value="tbl_"></property> --><!-- 注入自定義全局操作 --><property name="sqlInjector" ref="mySqlInjector"></property></bean>4.進行測試
編寫測試方法
/****? 自定義全局配置*/@Testpublic void testdeleteAll() {int result = employeeMapper.deleteAll();System.out.println("一共刪除了"+result);}進行測試 前要注意是否注冊性能分析插件,如果使用了則不能刪除全表。
MyBatisPlus插件擴展_SqlExplainInterceptor執行分析插件的使用:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89599695
運行測試
源碼下載
https://download.csdn.net/download/badao_liumang_qizhi/11147754
總結
以上是生活随笔為你收集整理的MyBatisPlus中自定义全局操作流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyBatisPlus插件扩展_Opti
- 下一篇: Java的poi的excel导入怎么判断