MyBatis-Plus自定義通用的方法實(shí)現(xiàn)
一、引言
大家已知MP給大家提供了很多通用的方法,可以看看MP源碼中DefaultSqlInjector這個(gè)類,在這個(gè)集合當(dāng)中包含了都是通用方法類,如果想要使用自定義通用方法,也需要添加到這個(gè)集合當(dāng)中。
/** * SQL 默認(rèn)注入器 * * @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()); } }
二、自定義方法實(shí)現(xiàn)
步驟一:創(chuàng)建自定義方法的類,小編這個(gè)以刪除為例。
/** * @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)建注入器,并添加到集合當(dāng)中。
/** * @Auther: IT賤男 * @Date: 2019/9/23 16:22 * @Description: 將自定義方法的類添加到注入器 */ @Component public class MySqlInjector extends DefaultSqlInjector { @Override public List<AbstractMethod> getMethodList() { // 這里很重要,先要通過父類方法,獲取到原有的集合,不然會(huì)自帶的通用方法會(huì)失效的 List<AbstractMethod> methodList = super.getMethodList(); // 添加自定義方法類 methodList.add(new DeleteAllMethod()); return methodList; } }
步驟三:在Mapper中加入自定義方法 ,如果同時(shí)有好幾個(gè)Mapper需要用到這個(gè)自定義通用方法,這樣設(shè)計(jì)可能比較合理。先創(chuàng)建一個(gè)自定義的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 條件構(gòu)造器 * @param user 修改的對(duì)象參數(shù) * @return */ @SqlParser(filter = true) int updateByMyWrapper(@Param(Constants.WRAPPER) Wrapper<User> userWrapper, @Param("user") User user); }
步驟四:最后測試,小編自定義方法就是刪除表中所有的數(shù)據(jù),當(dāng)然只是以刪除為例子,實(shí)際根據(jù)需求而定。
@Test public void delete() { int i = userMapper.deleteAll(); System.out.println(i); }
由于時(shí)間問題,小編只是大概的講了一下在MP中,需要使用自定義SQL通用方法的幾個(gè)實(shí)現(xiàn)步驟,以后有時(shí)間會(huì)來更新詳細(xì)內(nèi)容。
到此這篇關(guān)于MyBatis-Plus自定義通用的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)MyBatis-Plus自定義通用 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java使用阻塞隊(duì)列控制線程通信的方法實(shí)例詳解
這篇文章主要介紹了Java使用阻塞隊(duì)列控制線程通信的方法,結(jié)合實(shí)例形式詳細(xì)分析了java使用阻塞隊(duì)列控制線程通信的相關(guān)原理、方法及操作注意事項(xiàng),需要的朋友可以參考下2019-09-09SpringBoot工程打包與運(yùn)行的實(shí)現(xiàn)詳解
本文主要介紹了SpringBoot工程的打包與運(yùn)行的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07java安全fastjson1.2.24反序列化TemplatesImpl分析
這篇文章主要介紹了java安全fastjson1.2.24反序列化TemplatesImpl分析,fastjson是alibaba開源的一個(gè)用于處理json數(shù)據(jù)格式的解析庫,它支持將java對(duì)象解析成json字符串格式的數(shù)據(jù),也可以將json字符串還原成java對(duì)象2022-07-07Spring Security 中細(xì)化權(quán)限粒度的方法
這篇文章主要介紹了Spring Security 中細(xì)化權(quán)限粒度的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09解決redisTemplate向redis中插入String類型數(shù)據(jù)時(shí)出現(xiàn)亂碼問題
這篇文章主要介紹了解決redisTemplate向redis中插入String類型數(shù)據(jù)時(shí)出現(xiàn)亂碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Mybatis中如何進(jìn)行批量更新(updateBatch)
這篇文章主要介紹了Mybatis中如何進(jìn)行批量更新(updateBatch),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05SpringBoot統(tǒng)一api返回風(fēng)格的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot統(tǒng)一api返回風(fēng)格的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Java語言面向?qū)ο缶幊趟枷胫惻c對(duì)象實(shí)例詳解
這篇文章主要介紹了Java語言面向?qū)ο缶幊趟枷胫惻c對(duì)象實(shí)例詳解,還是十分不錯(cuò)的,這里給大家分享下,需要的朋友可以參考。2017-10-10