MyBatis-Plus自定義通用的方法實現(xiàn)
一、引言
大家已知MP給大家提供了很多通用的方法,可以看看MP源碼中DefaultSqlInjector這個類,在這個集合當中包含了都是通用方法類,如果想要使用自定義通用方法,也需要添加到這個集合當中。
/**
* SQL 默認注入器
*
* @author hubin
* @since 2018-04-10
*/
public class DefaultSqlInjector extends AbstractSqlInjector {
@Override
public List<AbstractMethod> getMethodList() {
return Stream.of(
new Insert(),
new Delete(),
new DeleteByMap(),
new DeleteById(),
new DeleteBatchByIds(),
new Update(),
new UpdateById(),
new SelectById(),
new SelectBatchByIds(),
new SelectByMap(),
new SelectOne(),
new SelectCount(),
new SelectMaps(),
new SelectMapsPage(),
new SelectObjs(),
new SelectList(),
new SelectPage()
).collect(toList());
}
}二、自定義方法實現(xiàn)
步驟一:創(chuàng)建自定義方法的類,小編這個以刪除為例。
/**
* @Auther: IT賤男
* @Date: 2019/9/23 16:14
* @Description: 通用刪除全部方法
*/
public class DeleteAllMethod extends AbstractMethod {
@Override
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
// 自定義sql tableInfo.getTableName() 獲取表名
String sql = "delete from " + tableInfo.getTableName();
// mapper 接口方法名
String method = "deleteAll";
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
return addDeleteMappedStatement(mapperClass, method, sqlSource);
}
}步驟二:創(chuàng)建注入器,并添加到集合當中。
/**
* @Auther: IT賤男
* @Date: 2019/9/23 16:22
* @Description: 將自定義方法的類添加到注入器
*/
@Component
public class MySqlInjector extends DefaultSqlInjector {
@Override
public List<AbstractMethod> getMethodList() {
// 這里很重要,先要通過父類方法,獲取到原有的集合,不然會自帶的通用方法會失效的
List<AbstractMethod> methodList = super.getMethodList();
// 添加自定義方法類
methodList.add(new DeleteAllMethod());
return methodList;
}
}步驟三:在Mapper中加入自定義方法 ,如果同時有好幾個Mapper需要用到這個自定義通用方法,這樣設計可能比較合理。先創(chuàng)建一個自定義的MyMapper繼承BaseMapper,其他的Mapper只需要繼承MyMapper就可以使用自定義方法了。
/**
* @Auther: IT賤男
* @Date: 2019/9/23 16:35
* @Description: 自定義通用Mapper方法
*/
public interface MyMapper<T> extends BaseMapper<T> {
/**
* 自定義通用方法
* @return
*/
int deleteAll();
}
/**
* <p>
* 用戶 Mapper 接口
* </p>
*
* @author IT賤男
* @since 2019-06-14
*/
public interface UserMapper extends MyMapper<User> {
/**
* 自定Wrapper修改
*
* @param userWrapper 條件構造器
* @param user 修改的對象參數(shù)
* @return
*/
@SqlParser(filter = true)
int updateByMyWrapper(@Param(Constants.WRAPPER) Wrapper<User> userWrapper, @Param("user") User user);
}步驟四:最后測試,小編自定義方法就是刪除表中所有的數(shù)據(jù),當然只是以刪除為例子,實際根據(jù)需求而定。
@Test
public void delete() {
int i = userMapper.deleteAll();
System.out.println(i);
}由于時間問題,小編只是大概的講了一下在MP中,需要使用自定義SQL通用方法的幾個實現(xiàn)步驟,以后有時間會來更新詳細內(nèi)容。
到此這篇關于MyBatis-Plus自定義通用的方法實現(xiàn)的文章就介紹到這了,更多相關MyBatis-Plus自定義通用 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
IntelliJ IDEA 2020.1.2激活工具下載及破解方法免費可用至2089年(強烈推薦)
這篇文章主要介紹了IntelliJ IDEA 2020.1.2激活工具下載及破解方法免費可用至2089年(強烈推薦),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
計算Java數(shù)組長度函數(shù)的方法以及代碼分析
在本篇內(nèi)容里,小編給大家整理了關于計算Java數(shù)組長度函數(shù)的方法以及代碼分析內(nèi)容,有興趣的朋友么可以學習參考下。2022-11-11
Java爬蟲范例之使用Htmlunit爬取學校教務網(wǎng)課程表信息
htmlunit 是一款開源的java 頁面分析工具,讀取頁面后,可以有效的使用htmlunit分析頁面上的內(nèi)容。項目可以模擬瀏覽器運行,被譽為java瀏覽器的開源實現(xiàn)。今天我們用這款分析工具來爬取學校教務網(wǎng)課程表信息2021-11-11
java 通過發(fā)送json,post請求,返回json數(shù)據(jù)的方法
下面小編就為大家分享一篇java 通過發(fā)送json,post請求,返回json數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
spring boot啟動時mybatis報循環(huán)依賴的錯誤(推薦)
今天小編抽時間給大家分享spring boot啟動時mybatis報循環(huán)依賴的錯誤,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-12-12

