mybatis-plus 查詢時(shí)排除字段方法的兩種方法
我們?cè)陂_發(fā)應(yīng)用時(shí),在某些應(yīng)用場(chǎng)景下查詢有時(shí)需要排除某些字段,mybatis-plus主要提供了以下兩種方式
1.通過@TableField()
1.1準(zhǔn)備User類
@Data
public class User extends Model<User> {
private Long id;
private String name;
private Integer age;
private String email;
@TableField(exist = false)
private int deleted;
}1.2 測(cè)試方法
@Test
public void testQueryPage(){
QueryWrapper<User> wrapper= new QueryWrapper<User>();
wrapper.ne("age",200) ;
Page<User> page= new Page<User>(6,20,true);
IPage<User> iPage= userMapper.selectPage(page,wrapper);
System.out.println("總頁數(shù):"+iPage.getPages()+",總記錄數(shù):"+iPage.getTotal()+",當(dāng)前頁:"+iPage.getCurrent());
List<User> users= iPage.getRecords();
users.forEach(System.out::println);
}1.3測(cè)試結(jié)果
2022-10-10 11:18:10.901 DEBUG 23728 --- [ main] c.m.s.mapper.UserMapper.selectPage : ==> Preparing: SELECT id,name,age,email FROM user WHERE (age <> ?) LIMIT ?,?
2022-10-10 11:18:10.901 DEBUG 23728 --- [ main] c.m.s.mapper.UserMapper.selectPage : ==> Parameters: 200(Integer), 100(Long), 20(Long)
2022-10-10 11:18:10.911 DEBUG 23728 --- [ main] c.m.s.mapper.UserMapper.selectPage : <== Total: 14
2.通過querywrapper中的select方法來排除
2.1.具體方法內(nèi)容:
public QueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
super.setEntityClass(entityClass);
this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(this.getEntityClass()).chooseSelect(predicate));
return (QueryWrapper)this.typedThis;
}2.2.這里的Predicate接口有一個(gè)關(guān)鍵方法,也就意味著test方法返回ture才會(huì)展現(xiàn)這個(gè)
/**
* Evaluates this predicate on the given argument.
*
* @param t the input argument
* @return {@code true} if the input argument matches the predicate,
* otherwise {@code false}
*/
boolean test(T t);下面我們來按排這個(gè)方法來準(zhǔn)備
2.3 準(zhǔn)備User類
@Data
public class User extends Model<User> {
private Long id;
private String name;
private Integer age;
private String email;
private int deleted;
}2.4 準(zhǔn)備測(cè)方法
@Test
public void testQueryPage(){
QueryWrapper<User> wrapper= new QueryWrapper<User>();
wrapper.ne("age",200).select(User.class,info -> !info.getColumn().equals("deleted"));
Page<User> page= new Page<User>(6,20,true);
IPage<User> iPage= userMapper.selectPage(page,wrapper);
System.out.println("總頁數(shù):"+iPage.getPages()+",總記錄數(shù):"+iPage.getTotal()+",當(dāng)前頁:"+iPage.getCurrent());
List<User> users= iPage.getRecords();
users.forEach(System.out::println);
}2.5運(yùn)行l(wèi)og
2022-10-10 11:22:04.720 DEBUG 20580 --- [ main] c.m.s.m.UserMapper.selectPage_mpCount : ==> Preparing: SELECT COUNT(*) AS total FROM user WHERE deleted = 0 AND (age <> ?)
2022-10-10 11:22:04.750 DEBUG 20580 --- [ main] c.m.s.m.UserMapper.selectPage_mpCount : ==> Parameters: 200(Integer)
2022-10-10 11:22:04.780 DEBUG 20580 --- [ main] c.m.s.m.UserMapper.selectPage_mpCount : <== Total: 1
2022-10-10 11:22:04.791 DEBUG 20580 --- [ main] c.m.s.mapper.UserMapper.selectPage : ==> Preparing: SELECT id,name,age,email FROM user WHERE deleted=0 AND (age <> ?) LIMIT ?,?
2022-10-10 11:22:04.792 DEBUG 20580 --- [ main] c.m.s.mapper.UserMapper.selectPage : ==> Parameters: 200(Integer), 100(Long), 20(Long)
2022-10-10 11:22:04.796 DEBUG 20580 --- [ main] c.m.s.mapper.UserMapper.selectPage : <== Total: 13
總頁數(shù):6,總記錄數(shù):113,當(dāng)前頁:6
User(id=197, name=zouli197, age=227, email=zoulinlin197@163.com, deleted=0)
User(id=198, name=zouli198, age=228, email=zoulinlin198@163.com, deleted=0)
User(id=199, name=zouli199, age=229, email=zoulinlin199@163.com, deleted=0)
User(id=310, name=zouli10, age=40, email=zoulinlin10@163.com, deleted=0)
如果沒有按照上面說明的方式來進(jìn)行,正常測(cè)試log會(huì)有deleted字段查詢
2022-10-10 11:24:33.069 DEBUG 18760 --- [ main] c.m.s.m.UserMapper.selectPage_mpCount : ==> Preparing: SELECT COUNT(*) AS total FROM user WHERE deleted = 0 AND (age <> ?)
2022-10-10 11:24:33.089 DEBUG 18760 --- [ main] c.m.s.m.UserMapper.selectPage_mpCount : ==> Parameters: 200(Integer)
2022-10-10 11:24:33.119 DEBUG 18760 --- [ main] c.m.s.m.UserMapper.selectPage_mpCount : <== Total: 1
2022-10-10 11:24:33.129 DEBUG 18760 --- [ main] c.m.s.mapper.UserMapper.selectPage : ==> Preparing: SELECT id,name,age,email,deleted FROM user WHERE deleted=0 AND (age <> ?) LIMIT ?,?
2022-10-10 11:24:33.129 DEBUG 18760 --- [ main] c.m.s.mapper.UserMapper.selectPage : ==> Parameters: 200(Integer), 100(Long), 20(Long)
2022-10-10 11:24:33.129 DEBUG 18760 --- [ main] c.m.s.mapper.UserMapper.selectPage : <== Total: 13
總頁數(shù):6,總記錄數(shù):113,當(dāng)前頁:6
User(id=197, name=zouli197, age=227, email=zoulinlin197@163.com, deleted=0)
到此這篇關(guān)于mybatis-plus 查詢時(shí)排除字段方法的兩種方法的文章就介紹到這了,更多相關(guān)mybatis-plus 查詢排除字段內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JAVA實(shí)現(xiàn)對(duì)阿里云DNS的解析管理
本文主要介紹了JAVA實(shí)現(xiàn)對(duì)阿里云DNS的解析管理,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
java智能問答圖靈機(jī)器人AI接口(聚合數(shù)據(jù))
這篇文章主要介紹了java智能問答圖靈機(jī)器人AI接口(聚合數(shù)據(jù)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
Spring?Boot統(tǒng)一處理全局異常的實(shí)戰(zhàn)教程
最近在做項(xiàng)目時(shí)需要對(duì)異常進(jìn)行全局統(tǒng)一處理,所以下面這篇文章主要給大家介紹了關(guān)于Spring?Boot統(tǒng)一處理全局異常的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12
Java調(diào)度線程池ScheduledThreadPoolExecutor不執(zhí)行問題分析
最近項(xiàng)目上反饋某個(gè)重要的定時(shí)任務(wù)突然不執(zhí)行了,很頭疼,開發(fā)環(huán)境和測(cè)試環(huán)境都沒有出現(xiàn)過這個(gè)問題。定時(shí)任務(wù)采用的是ScheduledThreadPoolExecutor,后來一看代碼發(fā)現(xiàn)踩了一個(gè)大坑。本文就來和大家聊聊這次的踩坑記錄與解決方法,需要的可以參考一下2023-03-03
springboot多數(shù)據(jù)源配置及切換的示例代碼詳解
這篇文章主要介紹了springboot多數(shù)據(jù)源配置及切換,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Java實(shí)戰(zhàn)項(xiàng)目之斗地主和斗牛游戲的實(shí)現(xiàn)
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)斗地主和一個(gè)斗牛游戲,大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11
java yaml轉(zhuǎn)properties工具類方式
這篇文章主要介紹了java yaml轉(zhuǎn)properties工具類方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
詳解SpringBoot中@ConditionalOnClass注解的使用
這篇文章主要和大家詳細(xì)介紹一下springboot中@ConditionalOnClass注解的用法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-08-08
springboot+maven快速構(gòu)建項(xiàng)目的示例代碼
本篇文章主要介紹了springboot+maven快速構(gòu)建項(xiàng)目的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08

