mybatis plus 關聯數據庫排除不必要字段方式
關聯數據庫排除不必要字段
java自帶 聲明該字段是 transient 的
/** * 虛擬綁定流程當前審批人對應表字段 */ private transient String status;
聲明該字段是 static 的
/** * 虛擬綁定流程當前審批人對應表字段 */ private static String status;
通過註解聲明該字段不是一個數據庫表裡面的字段
/** * 虛擬綁定流程當前審批人對應表字段 */ @TableField(exist = false) private String status;
哪種業務場景用哪種方式呢?
如果想既支持序列化又不需要關聯數據庫字段 ,則用 @TableField;
如果隻是不想關聯數據庫,則三種都可以使用;
項目中,由於導出excel 時候,數據必須序列化和反序列化,所以用 transient 確實能滿足排除非數據庫字段,但是也會導致數據導出時候為null,所以這種場景最好用@@TableField
排除自定義字段不查詢
需求原因
由於數據庫表設計為一張為組表
一張為對應組下的參數表
在查詢數據時想要在查詢組表的同時吧對應組下的數據頁同時查出來
所以在組實體類下增加瞭一個對應的參數來接受對應的組數據
錯誤截圖
錯誤分析
根據查詢語句來看
條件查詢默認把所有字段都查出來瞭
但由於自定義的字段在數據庫中不存在,所以報錯
嘗試
這裡最大的問題就是如何把自定義字段排除掉,在網上搜瞭一圈,
最後才在Mybatis-plus的官方文檔裡發現
@TableFiled有一個exist屬性,是用來定義字段是否為數據庫表字段的。。。。
於是把該屬性加上
重新運行
完美解決!
結論就是:有問題下次先看官方文檔
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- MyBatis-Plus非表字段的三種處理方法小結
- mybatis 忽略實體對象的某個屬性(2種方式)
- Mybatis-Plus查詢中如何排除標識字段
- 對Mybatis Plus中@TableField的使用正解
- Mybatis-plus使用註解 @TableField(exist = false)