對Mybatis?Plus中@TableField的使用正解
@TableField的使用
1 研究背景和過程
妹紙開發(fā)突然發(fā)現(xiàn)@TableField失效了,在群里發(fā)問。一了解,發(fā)現(xiàn)妹紙本意是想用@TabkeField達到類似@JsonProperty的功能。也就是當實體類屬性名與數(shù)據(jù)庫列名不一致時,通過此注解實現(xiàn)別名效果。
奇怪的是,這注解一部分成功,一部分失效。具體表現(xiàn)就是有時候可以取到值,有時候又取不到。我點進改注解源碼,發(fā)現(xiàn)它給value設定的本意是:當駝峰轉(zhuǎn)化未開啟時,使用此注解實現(xiàn)駝峰轉(zhuǎn)化。然而,我實際測試表明它其實沒這功能。
我信誓旦旦跟妹紙講,@TableField沒有別名的功能。誰知妹紙給我發(fā)了一張自動打印sql的截圖。里面清清楚楚的顯示,MP確實自動生成了AS別名。靈光一閃,是否是Mybatis Plus自動生成的可以別名,而自己寫的sql就不行?
不驗不知道,一驗嚇一跳。果然如此,手寫的sql都不能自動生成別名,而自動生成的sql查詢語句都成功轉(zhuǎn)化了。至此,@TableField注解告一段落。
2 總結(jié)
2.1 別名效果 value屬性
使用MP自動生成的方法時,可以用@TableField起別名
在xml寫sql時,需要用as或者resultMap來轉(zhuǎn)化
2.2 防止字段持久化 exist屬性
使用exist屬性可以控制類中屬性在表中是都一定對應,如果有不存在于數(shù)據(jù)表的字段,建議都設成fasle
@TableField的作用
@TableField(exist = false)
注解加載bean屬性上,表示當前屬性不是數(shù)據(jù)庫的字段,但在項目中必須使用,這樣在使用bean的時候,mybatis-plus就會忽略這個,不會報錯
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
通過Java來測試JSON和Protocol Buffer的傳輸文件大小
這篇文章主要介紹了通過Java來測試JSON和Protocol Buffer的傳輸文件大小,Protocol Buffer(文中簡稱Protobuffer)是谷歌開發(fā)的新的文件傳輸格式,需要的朋友可以參考下2015-12-12
MyBatis嵌套查詢collection報錯:org.apache.ibatis.exceptions.TooMany
本文主要介紹了MyBatis嵌套查詢collection報錯:org.apache.ibatis.exceptions.TooManyResultsException,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-09-09
SpringBoot整合Mybatis與MybatisPlus方法詳細講解
這篇文章主要介紹了SpringBoot整合Mybatis與MybatisPlus方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-01-01

