首頁 > 軟體

mybatis plus 關聯資料庫排除不必要欄位方式

2022-03-10 13:00:30

關聯資料庫排除不必要欄位

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屬性,是用來定義欄位是否為資料庫表欄位的。。。。

於是把該屬性加上

重新執行

完美解決!

結論就是:有問題下次先看官方檔案

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com