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。

推薦閱讀: