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

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

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

映射匹配兼容性

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

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

那么問題就來了:

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

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

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

  • 問題2:編碼中添加了數(shù)據(jù)庫中未定義的屬性

當(dāng)模型類中多了一個數(shù)據(jù)庫表不存在的字段,就會導(dǎo)致生成的sql語句中在select的時候查詢了數(shù)據(jù)庫不存在的字段,程序運行就會報錯,錯誤信息為:

Unknown column ‘多出來的字段名稱’ in ‘field list’

具體的解決方案用到的還是@TableField注解,它有一個屬性叫exist,設(shè)置該字段是否在數(shù)據(jù)庫表中存在,如果設(shè)置為false則不存在,生成sql語句查詢的時候,就不會再查詢該字段了。

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

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

知識點@TableField

名稱@TableField
類型屬性注解
位置模型類屬性定義上方
作用設(shè)置當(dāng)前屬性對應(yīng)的數(shù)據(jù)庫表中的字段關(guān)系
相關(guān)屬性value(默認(rèn)):設(shè)置數(shù)據(jù)庫表字段名稱
exist:設(shè)置屬性在數(shù)據(jù)庫表字段中是否存在,默認(rèn)為true,此屬性不能與value合并使用
select:設(shè)置屬性是否參與查詢,此屬性與select()映射配置不沖突
  • 問題4:表名與編碼開發(fā)設(shè)計不同步

該問題主要是表的名稱和模型類的名稱不一致,導(dǎo)致查詢失敗,這個時候通常會報如下錯誤信息:

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

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

知識點@TableName

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

代碼演示

接下來我們使用案例的方式把剛才的知識演示下:

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

直接查詢會報錯,原因是MP默認(rèn)情況下會使用模型類的類名首字母小寫當(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

直接查詢會報錯,原因是MP默認(rèn)情況下會使用模型類的屬性名當(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:添加一個數(shù)據(jù)庫表不存在的字段

@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;
}

直接查詢會報錯,原因是MP默認(rèn)情況下會查詢模型類的所有屬性對應(yīng)的數(shù)據(jù)庫表的列,而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:查詢時將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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • kafka添加安全驗證配置方式

    kafka添加安全驗證配置方式

    這篇文章主要介紹了kafka添加安全驗證配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java應(yīng)用/JVM宕機排查步驟操作

    Java應(yīng)用/JVM宕機排查步驟操作

    這篇文章主要介紹了Java應(yīng)用/JVM宕機排查步驟操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • SpringMVC全局異常處理的三種方式

    SpringMVC全局異常處理的三種方式

    這篇文章主要介紹了SpringMVC全局異常處理的三種方式,幫助大家更好的理解和使用springmvc,感興趣的朋友可以了解下
    2021-01-01
  • Java接口返回省市區(qū)樹形結(jié)構(gòu)的實現(xiàn)

    Java接口返回省市區(qū)樹形結(jié)構(gòu)的實現(xiàn)

    本文主要介紹了Java接口返回省市區(qū)樹形結(jié)構(gòu)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • JDK10新特性之var泛型和多個接口實現(xiàn)方法

    JDK10新特性之var泛型和多個接口實現(xiàn)方法

    這篇文章主要介紹了JDK10的新特性:var泛型和多個接口實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 解析Java編程中設(shè)計模式的開閉原則的運用

    解析Java編程中設(shè)計模式的開閉原則的運用

    這篇文章主要介紹了解析Java編程中設(shè)計模式的開閉原則的運用,開閉原則多應(yīng)用于Java程序的擴展開發(fā)方面,需要的朋友可以參考下
    2016-02-02
  • Go Java算法之外觀數(shù)列實現(xiàn)方法示例詳解

    Go Java算法之外觀數(shù)列實現(xiàn)方法示例詳解

    這篇文章主要為大家介紹了Go Java算法外觀數(shù)列實現(xiàn)的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • SpringBoot + Mybatis-plus實戰(zhàn)之Mybatis-plus的一級緩存、二級緩存

    SpringBoot + Mybatis-plus實戰(zhàn)之Mybatis-plus的一級緩存、二級緩存

    這篇文章主要介紹了SpringBoot + Mybatis-plus實戰(zhàn)之Mybatis-plus的一級緩存、二級緩存,本文通過實例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • RocketMQ消息拉取過程詳解

    RocketMQ消息拉取過程詳解

    這篇文章主要為大家介紹了RocketMQ消息拉取過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Spring事務(wù)Transaction配置的五種注入方式詳解

    Spring事務(wù)Transaction配置的五種注入方式詳解

    這篇文章主要介紹了Spring事務(wù)Transaction配置的五種注入方式詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04

最新評論

阿克苏市| 连云港市| 和政县| 玉林市| 甘德县| 广元市| 榆树市| 丹棱县| 阿克苏市| 怀宁县| 阿克陶县| 尚志市| 肥城市| 仲巴县| 德令哈市| 卓尼县| 车致| 潜山县| 大安市| 呼和浩特市| 环江| 芜湖市| 泰顺县| 根河市| 吉木乃县| 昂仁县| 于都县| 青河县| 兴城市| 桐梓县| 汉川市| 古浪县| 玉溪市| 兴安盟| 霞浦县| 酒泉市| 蒙城县| 盈江县| 军事| 中阳县| 南昌市|