最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatisPlus深入探究映射匹配的兼容性

 更新時(shí)間:2022年08月18日 14:56:49   作者:十八歲討厭編程  
在最近的工作中,碰到一個(gè)比較復(fù)雜的返回結(jié)果,發(fā)現(xiàn)簡(jiǎn)單映射已經(jīng)解決不了這個(gè)問(wèn)題了,只好去求助百度,學(xué)習(xí)mybatis映射匹配應(yīng)該怎么寫(xiě),將學(xué)習(xí)筆記結(jié)合工作碰到的問(wèn)題寫(xiě)下本文,供自身查漏補(bǔ)缺,同時(shí)已被不時(shí)之需

映射匹配兼容性

前面我們已經(jīng)能從表中查詢出數(shù)據(jù),并將數(shù)據(jù)封裝到模型類中,這整個(gè)過(guò)程涉及到一張表和一個(gè)模型類:

之所以數(shù)據(jù)能夠成功的從表中獲取并封裝到模型對(duì)象中,原因是表的字段列名和模型類的屬性名一樣。

那么問(wèn)題就來(lái)了:

  • 問(wèn)題1:表字段與編碼屬性設(shè)計(jì)不同步

當(dāng)表的列名和模型類的屬性名發(fā)生不一致,就會(huì)導(dǎo)致數(shù)據(jù)封裝不到模型對(duì)象,這個(gè)時(shí)候就需要其中一方做出修改,那如果前提是兩邊都不能改又該如何解決?

MP給我們提供了一個(gè)注解@TableField,使用該注解可以實(shí)現(xiàn)模型類屬性名和表的列名之間的映射關(guān)系

  • 問(wèn)題2:編碼中添加了數(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ò),錯(cuò)誤信息為:

Unknown column ‘多出來(lái)的字段名稱’ in ‘field list’

具體的解決方案用到的還是@TableField注解,它有一個(gè)屬性叫exist,設(shè)置該字段是否在數(shù)據(jù)庫(kù)表中存在,如果設(shè)置為false則不存在,生成sql語(yǔ)句查詢的時(shí)候,就不會(huì)再查詢?cè)撟侄瘟恕?/p>

  • 問(wèn)題3:采用默認(rèn)查詢開(kāi)放了更多的字段查看權(quán)限

查詢表中所有的列的數(shù)據(jù),就可能把一些敏感數(shù)據(jù)查詢到返回給前端,這個(gè)時(shí)候我們就需要限制哪些字段默認(rèn)不要進(jìn)行查詢。解決方案是@TableField注解的一個(gè)屬性叫select,該屬性設(shè)置默認(rèn)是否需要查詢?cè)撟侄蔚闹?,true(默認(rèn)值)表示默認(rèn)查詢?cè)撟侄?,false表示默認(rèn)不查詢?cè)撟侄巍?/p>

知識(shí)點(diǎn)@TableField

名稱@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)題4:表名與編碼開(kāi)發(fā)設(shè)計(jì)不同步

該問(wèn)題主要是表的名稱和模型類的名稱不一致,導(dǎo)致查詢失敗,這個(gè)時(shí)候通常會(huì)報(bào)如下錯(cuò)誤信息:

Table ‘databaseName.tableNaem’ doesn’t exist,翻譯過(guò)來(lái)就是數(shù)據(jù)庫(kù)中的表不存在。

解決方案是使用MP提供的另外一個(gè)注解@TableName來(lái)設(shè)置表與模型類之間的對(duì)應(yīng)關(guān)系。

知識(shí)點(diǎn)@TableName

名稱@TableName
類型類注解
位置模型類定義上方
作用設(shè)置當(dāng)前類對(duì)應(yīng)于數(shù)據(jù)庫(kù)表關(guān)系
相關(guān)屬性value(默認(rèn)):設(shè)置數(shù)據(jù)庫(kù)表名稱

代碼演示

接下來(lái)我們使用案例的方式把剛才的知識(shí)演示下:

步驟1:修改數(shù)據(jù)庫(kù)表user為tbl_user

直接查詢會(huì)報(bào)錯(cuò),原因是MP默認(rèn)情況下會(huì)使用模型類的類名首字母小寫(xiě)當(dāng)表名使用。

步驟2:模型類添加@TableName注解

@Data
@TableName("tbl_user")
public class User {
    private Long id;
    private String name;
    private String password;
    private Integer age;
    private String tel;
}

步驟3:將字段password修改成pwd

直接查詢會(huì)報(bào)錯(cuò),原因是MP默認(rèn)情況下會(huì)使用模型類的屬性名當(dāng)做表的列名使用

步驟4:使用@TableField映射關(guān)系

@Data
@TableName("tbl_user")
public class User {
    private Long id;
    private String name;
    @TableField(value="pwd")
    private String password;
    private Integer age;
    private String tel;
}

步驟5:添加一個(gè)數(shù)據(jù)庫(kù)表不存在的字段

@Data
@TableName("tbl_user")
public class User {
    private Long id;
    private String name;
    @TableField(value="pwd")
    private String password;
    private Integer age;
    private String tel;
    private Integer online;
}

直接查詢會(huì)報(bào)錯(cuò),原因是MP默認(rèn)情況下會(huì)查詢模型類的所有屬性對(duì)應(yīng)的數(shù)據(jù)庫(kù)表的列,而online不存在

步驟6:使用@TableField排除字段

@Data
@TableName("tbl_user")
public class User {
    private Long id;
    private String name;
    @TableField(value="pwd")
    private String password;
    private Integer age;
    private String tel;
    @TableField(exist=false)
    private Integer online;
}

步驟7:查詢時(shí)將pwd隱藏

@Data
@TableName("tbl_user")
public class User {
    private Long id;
    private String name;
    @TableField(value="pwd",select=false)
    private String password;
    private Integer age;
    private String tel;
    @TableField(exist=false)
    private Integer online;
}

到此這篇關(guān)于MyBatisPlus深入探究映射匹配的兼容性的文章就介紹到這了,更多相關(guān)MyBatis映射匹配內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

昭苏县| 芦溪县| 象州县| 全州县| 南充市| 丹巴县| 澄城县| 平昌县| 蓝田县| 古蔺县| 武鸣县| 汕尾市| 江北区| 铜鼓县| 怀仁县| 廊坊市| 赤城县| 萝北县| 承德市| 富宁县| 凯里市| 桓台县| 竹北市| 景德镇市| 武义县| 泗阳县| 石屏县| 余干县| 镇原县| 丰城市| 浪卡子县| 松阳县| 合江县| 陈巴尔虎旗| 施秉县| 辽宁省| 聊城市| 石泉县| 玉树县| 黔南| 凤山市|