Mybatis-Plus 映射匹配兼容性的問題解決
從表中查詢出數(shù)據(jù),并將數(shù)據(jù)封裝到模型類中,這整個過程涉及到一張表和一個模型類
之所以數(shù)據(jù)能夠成功的從表中獲取并封裝到模型對象中,原因是表的字段列名和模型類的屬性名一樣
這樣可能會產(chǎn)生以下問題:
問題一:表字段與編碼屬性設計不同步
當表的列名和模型類的屬性名發(fā)生不一致,就會導致數(shù)據(jù)封裝不到模型對象
這個時候就需要其中一方做出修改,那如果前提是兩邊都不能改又該如何解決?
MP提供了一個注解@TableField,使用該注解可以實現(xiàn)模型類屬性名和表的列名之間的映射關系





問題二:編碼中添加了數(shù)據(jù)庫中未定義的屬性
當模型類中多了一個數(shù)據(jù)庫表不存在的字段,就會導致生成的sql語句中在select的時候查詢了數(shù)據(jù)庫不存在的字段,程序運行就會報錯
@TableField 注解它有一個屬性叫exist
設置該字段是否在數(shù)據(jù)庫表中存在,如果設置為false則不存在,生成sql語句查詢的時候,就不會再查詢該字段了




問題三:采用默認查詢開放了更多的字段查看權限
- 查詢表中所有的列的數(shù)據(jù),就可能把一些敏感數(shù)據(jù)查詢到返回給前端
- 這時就需要限制哪些字段默認不要進行查詢
- 解決方案是@TableField 注解的一個屬性select,該屬性設置默認是否需要查詢該字段的值
- true(默認值)表示默認查詢該字段,false表示默認不查詢該字段


@TableField
類型 屬性注解
位置 模型類屬性定義上方
作用 設置當前屬性對應的數(shù)據(jù)庫表中的字段關系
相關屬性:
- value(默認):設置數(shù)據(jù)庫表字段名稱
- exist:設置屬性在數(shù)據(jù)庫表字段中是否存在,默認為true,此屬性不能與value合并使用
- select:設置屬性是否參與查詢,此屬性與select()映射配置不沖突
問題四:表名與編碼開發(fā)設計不同步
該問題主要是表的名稱和模型類的名稱不一致,導致查詢失敗
使用MP提供的另外一個注解@TableName 來設置表與模型類之間的對應關系解決




@TableName
類型 類注解
位置 模型類定義上方
作用 設置當前類對應于數(shù)據(jù)庫表關系
相關屬性 value(默認):設置數(shù)據(jù)庫表名稱
到此這篇關于Mybatis-Plus 映射匹配兼容性的問題解決的文章就介紹到這了,更多相關Mybatis-Plus 映射匹配兼容性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MybatisPlus更新為null的字段及自定義sql注入
mybatis-plus在執(zhí)行更新操作,當更新字段為空字符串或者null的則不會執(zhí)行更新,本文主要介紹了MybatisPlus更新為null的字段及自定義sql注入,感興趣的可以了解一下2024-05-05
mybatis實現(xiàn)增刪改查_動力節(jié)點Java學院整理
本文通過實例代碼給大家介紹了mybatis實現(xiàn)增刪改查功能,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-09-09

