Mybatis-Plus 映射匹配兼容性的問(wèn)題解決
從表中查詢出數(shù)據(jù),并將數(shù)據(jù)封裝到模型類中,這整個(gè)過(guò)程涉及到一張表和一個(gè)模型類
之所以數(shù)據(jù)能夠成功的從表中獲取并封裝到模型對(duì)象中,原因是表的字段列名和模型類的屬性名一樣
這樣可能會(huì)產(chǎn)生以下問(wèn)題:
問(wèn)題一:表字段與編碼屬性設(shè)計(jì)不同步
當(dāng)表的列名和模型類的屬性名發(fā)生不一致,就會(huì)導(dǎo)致數(shù)據(jù)封裝不到模型對(duì)象
這個(gè)時(shí)候就需要其中一方做出修改,那如果前提是兩邊都不能改又該如何解決?
MP提供了一個(gè)注解@TableField,使用該注解可以實(shí)現(xiàn)模型類屬性名和表的列名之間的映射關(guān)系
問(wèn)題二:編碼中添加了數(shù)據(jù)庫(kù)中未定義的屬性
當(dāng)模型類中多了一個(gè)數(shù)據(jù)庫(kù)表不存在的字段,就會(huì)導(dǎo)致生成的sql語(yǔ)句中在select的時(shí)候查詢了數(shù)據(jù)庫(kù)不存在的字段,程序運(yùn)行就會(huì)報(bào)錯(cuò)
@TableField 注解它有一個(gè)屬性叫exist
設(shè)置該字段是否在數(shù)據(jù)庫(kù)表中存在,如果設(shè)置為false則不存在,生成sql語(yǔ)句查詢的時(shí)候,就不會(huì)再查詢?cè)撟侄瘟?/p>
問(wèn)題三:采用默認(rèn)查詢開(kāi)放了更多的字段查看權(quán)限
- 查詢表中所有的列的數(shù)據(jù),就可能把一些敏感數(shù)據(jù)查詢到返回給前端
- 這時(shí)就需要限制哪些字段默認(rèn)不要進(jìn)行查詢
- 解決方案是@TableField 注解的一個(gè)屬性select,該屬性設(shè)置默認(rèn)是否需要查詢?cè)撟侄蔚闹?/li>
- true(默認(rèn)值)表示默認(rèn)查詢?cè)撟侄?,false表示默認(rèn)不查詢?cè)撟侄?/li>
@TableField
類型 屬性注解
位置 模型類屬性定義上方
作用 設(shè)置當(dāng)前屬性對(duì)應(yīng)的數(shù)據(jù)庫(kù)表中的字段關(guān)系
相關(guān)屬性:
- value(默認(rèn)):設(shè)置數(shù)據(jù)庫(kù)表字段名稱
- exist:設(shè)置屬性在數(shù)據(jù)庫(kù)表字段中是否存在,默認(rèn)為true,此屬性不能與value合并使用
- select:設(shè)置屬性是否參與查詢,此屬性與select()映射配置不沖突
問(wèn)題四:表名與編碼開(kāi)發(fā)設(shè)計(jì)不同步
該問(wèn)題主要是表的名稱和模型類的名稱不一致,導(dǎo)致查詢失敗
使用MP提供的另外一個(gè)注解@TableName 來(lái)設(shè)置表與模型類之間的對(duì)應(yīng)關(guān)系解決
@TableName
類型 類注解
位置 模型類定義上方
作用 設(shè)置當(dāng)前類對(duì)應(yīng)于數(shù)據(jù)庫(kù)表關(guān)系
相關(guān)屬性 value(默認(rèn)):設(shè)置數(shù)據(jù)庫(kù)表名稱
到此這篇關(guān)于Mybatis-Plus 映射匹配兼容性的問(wèn)題解決的文章就介紹到這了,更多相關(guān)Mybatis-Plus 映射匹配兼容性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java求100之內(nèi)的素?cái)?shù)(質(zhì)數(shù))簡(jiǎn)單示例
這篇文章主要介紹了java求100之內(nèi)的素?cái)?shù)簡(jiǎn)單示例,素?cái)?shù)是一個(gè)大于1的自然數(shù),如果除了1和它自身外,不能被其他自然數(shù)整除的數(shù);否則稱為合數(shù)2014-04-04Java 常用類解析:java異常機(jī)制,異常棧,異常處理方式,異常鏈,異常丟失詳解
這篇文章主要介紹了Java 常用類解析:java異常機(jī)制,異常棧,異常處理方式,異常鏈,異常丟失詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03Springboot實(shí)現(xiàn)過(guò)濾器的兩種方式
今天通過(guò)本文給大家分享Springboot實(shí)現(xiàn)過(guò)濾器的兩種方式,第一種是spring容器注冊(cè)filter,第二種方式是通過(guò)@WebFilter 注解來(lái)配置,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-10-10舉例解析Java多線程編程中需要注意的一些關(guān)鍵點(diǎn)
這篇文章主要介紹了Java多線程編程中需要注意的一些關(guān)鍵點(diǎn),包括ThreadLocal變量與原子更新等一些深層次的內(nèi)容,需要的朋友可以參考下2015-11-11使用Java通過(guò)OAuth協(xié)議驗(yàn)證發(fā)送微博的教程
這篇文章主要介紹了使用Java通過(guò)OAuth協(xié)議驗(yàn)證發(fā)送微博的教程,使用到了新浪微博為Java開(kāi)放的API weibo4j,需要的朋友可以參考下2016-02-02