Mybatis-Plus查詢中如何排除標(biāo)識(shí)字段
一、查詢中排除標(biāo)識(shí)字段
1.1 測(cè)試查詢
@Test public void findAllTest() { List<User> userList = userMapper.selectList(null); userList.forEach(System.out::println); }
1.2 實(shí)體類字段不添加@TableField注解
//邏輯刪除注解(0 未刪除 1 已刪除) @TableLogic /*@TableField(select = false)*/ private Boolean isDeleted;
在沒(méi)有加注解的情況下,is_deleted在查詢中存在
Preparing: SELECT id,name,email,age,status,is_deleted,version FROM user WHERE is_deleted=0
1.3 實(shí)體類字段添加@TableField注解
//邏輯刪除注解(0 未刪除 1 已刪除) @TableLogic @TableField(select = false) private Boolean isDeleted;
在加注解的情況下,is_deleted在查詢中不存在
Preparing: SELECT id,name,email,age,status,version FROM user WHERE is_deleted=0
二、查詢中排除標(biāo)識(shí)字段,自定義方法時(shí)需要注意
比如:自定義,查詢年齡大于xxx歲的,返回list集合
@Test public void mySelectTest() { // 查詢年齡大于xxx歲的 List<User> userList = userMapper.mySelectList(Wrappers.<User>lambdaQuery() .gt(User::getAge,1)); userList.forEach(System.out::println); }
@Select("select * from user ${ew.customSqlSegment}") List<User> mySelectList(@Param(Constants.WRAPPER) Wrapper<User> wrapper);
此時(shí)查看控制臺(tái)打印結(jié)果:
@TableField(select = false)該注解對(duì)于自定義方法查詢失效了,怎么做呢?加限定條件
// 查詢年齡大于xxx歲的 List<User> userList = userMapper.mySelectList(Wrappers.<User>lambdaQuery() .gt(User::getAge,1).eq(User::getIsDeleted,0));
三、@TableField注解其他用法
Mybatis-plus使用注解 @TableField(exist = false) 注明非數(shù)據(jù)庫(kù)字段屬性
@TableField(exist = false)
注解加載bean屬性上,表示當(dāng)前屬性不是數(shù)據(jù)庫(kù)的字段,但在項(xiàng)目中必須使用,這樣在新增等使用bean的時(shí)候,mybatis-plus就會(huì)忽略這個(gè),不會(huì)報(bào)錯(cuò)
Mybatis-Plus排除自定義字段不查詢
需求原因
由于數(shù)據(jù)庫(kù)表設(shè)計(jì)為一張為組表
一張為對(duì)應(yīng)組下的參數(shù)表
在查詢數(shù)據(jù)時(shí)想要在查詢組表的同時(shí)吧對(duì)應(yīng)組下的數(shù)據(jù)頁(yè)同時(shí)查出來(lái)
所以在組實(shí)體類下增加了一個(gè)對(duì)應(yīng)的參數(shù)來(lái)接受對(duì)應(yīng)的組數(shù)據(jù)
錯(cuò)誤截圖
錯(cuò)誤分析
根據(jù)查詢語(yǔ)句來(lái)看
條件查詢默認(rèn)把所有字段都查出來(lái)了
但由于自定義的字段在數(shù)據(jù)庫(kù)中不存在,所以報(bào)錯(cuò)
嘗試
這里最大的問(wèn)題就是如何把自定義字段排除掉,在網(wǎng)上搜了一圈,
最后才在Mybatis-plus的官方文檔里發(fā)現(xiàn)
@TableFiled有一個(gè)exist屬性,是用來(lái)定義字段是否為數(shù)據(jù)庫(kù)表字段的。。。。
于是把該屬性加上
重新運(yùn)行
完美解決!
結(jié)論
有問(wèn)題下次先看官方文檔吧,以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家
相關(guān)文章
Java實(shí)現(xiàn)輸入流轉(zhuǎn)化為String
這篇文章主要介紹了Java實(shí)現(xiàn)輸入流轉(zhuǎn)化為String的相關(guān)資料,需要的朋友可以參考下2016-12-12JAVA實(shí)現(xiàn)Excel和PDF上下標(biāo)的操作代碼
這篇文章主要介紹了JAVA實(shí)現(xiàn)Excel和PDF上下標(biāo),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09從源碼角度看spring mvc的請(qǐng)求處理過(guò)程
這篇文章主要介紹了從源碼角度看spring mvc的請(qǐng)求處理過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06SpringBoot前后端交互、全局異常處理之后端異常信息拋到前端顯示彈窗
Spring Boot是一個(gè)用于構(gòu)建獨(dú)立的、基于生產(chǎn)級(jí)別的Spring應(yīng)用程序的框架,下面這篇文章主要給大家介紹了關(guān)于SpringBoot前后端交互、全局異常處理之后端異常信息拋到前端顯示彈窗的相關(guān)資料,需要的朋友可以參考下2024-08-08Java適配器模式的實(shí)現(xiàn)及應(yīng)用場(chǎng)景
適配器模式是Java中一種常用的設(shè)計(jì)模式,它通過(guò)將一個(gè)類的接口轉(zhuǎn)換成客戶端所期望的另一種接口來(lái)實(shí)現(xiàn)不同接口之間的兼容性。適配器模式主要應(yīng)用于系統(tǒng)的接口不兼容、需要擴(kuò)展接口功能以及需要適應(yīng)不同環(huán)境的場(chǎng)景2023-04-04maven打包插件的使用(maven-compiler-plugin、maven-dependency-plugin、m
本文主要介紹了maven打包插件的使用(maven-compiler-plugin、maven-dependency-plugin、maven-jar-plugin、maven-resources-plugin),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06