mybatis-plus 查詢(xún)時(shí)排除字段方法的兩種方法
我們?cè)陂_(kāi)發(fā)應(yīng)用時(shí),在某些應(yīng)用場(chǎng)景下查詢(xún)有時(shí)需要排除某些字段,mybatis-plus主要提供了以下兩種方式
1.通過(guò)@TableField()
1.1準(zhǔn)備User類(lèi)
@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("總頁(yè)數(shù):"+iPage.getPages()+",總記錄數(shù):"+iPage.getTotal()+",當(dāng)前頁(yè):"+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.通過(guò)querywrapper中的select方法來(lái)排除
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);
下面我們來(lái)按排這個(gè)方法來(lái)準(zhǔn)備
2.3 準(zhǔn)備User類(lèi)
@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("總頁(yè)數(shù):"+iPage.getPages()+",總記錄數(shù):"+iPage.getTotal()+",當(dāng)前頁(yè):"+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
總頁(yè)數(shù):6,總記錄數(shù):113,當(dāng)前頁(yè):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)
如果沒(méi)有按照上面說(shuō)明的方式來(lái)進(jìn)行,正常測(cè)試log會(huì)有deleted字段查詢(xún)
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
總頁(yè)數(shù):6,總記錄數(shù):113,當(dāng)前頁(yè):6
User(id=197, name=zouli197, age=227, email=zoulinlin197@163.com, deleted=0)
到此這篇關(guān)于mybatis-plus 查詢(xún)時(shí)排除字段方法的兩種方法的文章就介紹到這了,更多相關(guān)mybatis-plus 查詢(xún)排除字段內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JAVA實(shí)現(xiàn)對(duì)阿里云DNS的解析管理
本文主要介紹了JAVA實(shí)現(xiàn)對(duì)阿里云DNS的解析管理,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01java智能問(wèn)答圖靈機(jī)器人AI接口(聚合數(shù)據(jù))
這篇文章主要介紹了java智能問(wèn)答圖靈機(jī)器人AI接口(聚合數(shù)據(jù)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02Spring?Boot統(tǒng)一處理全局異常的實(shí)戰(zhàn)教程
最近在做項(xiàng)目時(shí)需要對(duì)異常進(jìn)行全局統(tǒng)一處理,所以下面這篇文章主要給大家介紹了關(guān)于Spring?Boot統(tǒng)一處理全局異常的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12Java調(diào)度線程池ScheduledThreadPoolExecutor不執(zhí)行問(wèn)題分析
最近項(xiàng)目上反饋某個(gè)重要的定時(shí)任務(wù)突然不執(zhí)行了,很頭疼,開(kāi)發(fā)環(huán)境和測(cè)試環(huán)境都沒(méi)有出現(xiàn)過(guò)這個(gè)問(wèn)題。定時(shí)任務(wù)采用的是ScheduledThreadPoolExecutor,后來(lái)一看代碼發(fā)現(xiàn)踩了一個(gè)大坑。本文就來(lái)和大家聊聊這次的踩坑記錄與解決方法,需要的可以參考一下2023-03-03springboot多數(shù)據(jù)源配置及切換的示例代碼詳解
這篇文章主要介紹了springboot多數(shù)據(jù)源配置及切換,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09Java實(shí)戰(zhàn)項(xiàng)目之斗地主和斗牛游戲的實(shí)現(xiàn)
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)斗地主和一個(gè)斗牛游戲,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-11-11java yaml轉(zhuǎn)properties工具類(lèi)方式
這篇文章主要介紹了java yaml轉(zhuǎn)properties工具類(lèi)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10詳解SpringBoot中@ConditionalOnClass注解的使用
這篇文章主要和大家詳細(xì)介紹一下springboot中@ConditionalOnClass注解的用法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-08-08springboot+maven快速構(gòu)建項(xiàng)目的示例代碼
本篇文章主要介紹了springboot+maven快速構(gòu)建項(xiàng)目的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08