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

MyBatis中實(shí)現(xiàn)數(shù)據(jù)封裝的示例代碼

 更新時(shí)間:2025年09月29日 08:24:43   作者:燙燙燙燙燙  
本文主要介紹了MyBatis中實(shí)現(xiàn)數(shù)據(jù)封裝,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在使用MyBatis的時(shí)候,我們發(fā)現(xiàn)有些查詢后的數(shù)據(jù)庫表的字段名能夠正確封裝到實(shí)體類的屬性名中,而有些數(shù)據(jù)庫表中的字段名卻不能夠正確封裝到實(shí)體類的對(duì)應(yīng)屬性中,這是為什么呢?

觀察控制臺(tái)輸出打印日志以及實(shí)體類屬性和數(shù)據(jù)庫表字段的關(guān)系如下:

只有實(shí)體類屬性名和數(shù)據(jù)庫表中查詢返回的字段名保持一致時(shí),MyBatis才會(huì)為我們實(shí)現(xiàn)自動(dòng)映射,在實(shí)體類屬性名和數(shù)據(jù)庫表字段名不一致時(shí),通過控制臺(tái)打印的日志可以知道MyBatis并不能為我們實(shí)現(xiàn)對(duì)應(yīng)數(shù)據(jù)的自動(dòng)映射。那么該如何解決數(shù)據(jù)映射的問題呢?

  • 手動(dòng)結(jié)果映射
  • 給字段名起別名
  • 在配置文件中開啟駝峰命名的配置

手動(dòng)結(jié)果映射

1). 在Mapper持久層接口方法上,通過@Results@Result注解進(jìn)行手動(dòng)結(jié)果映射。

  • @Results的源碼
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Results {
  /**
   * Returns the id of this result map.
   *
   * @return the id of this result map
   */
  String id() default "";//這個(gè)結(jié)果映射集的名字

  /**
   * Returns mapping definitions for property.
   *
   * @return mapping definitions
   */
  Result[] value() default {};//Result類型數(shù)組
}
  • @Result部分源碼
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Repeatable(Results.class)
public @interface Result {
  /**
   * Returns whether id column or not.
   *
   * @return {@code true} if id column; {@code false} if otherwise
   */
  boolean id() default false;//通過true/false表示當(dāng)前列是否為主鍵

  /**
   * Return the column name(or column label) to map to this argument.
   *
   * @return the column name(or column label)
   */
  String column() default "";//指定表中要映射字段名

  /**
   * Returns the property name for applying this mapping.
   *
   * @return the property name
   */
  String property() default "";//指定類中要被映射的屬性名
}

觀察控制臺(tái)手動(dòng)結(jié)果映射后的日志:

當(dāng)然如果在別的SQL中也需要復(fù)用這個(gè)映射關(guān)系時(shí),我們可以給這個(gè)@Results中指定一個(gè)名字id,最后通過使用@ResultMap注解來使用這個(gè)映射關(guān)系。

  • @ResultMap
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface ResultMap {
  /**
   * Returns result map names to use.
   *
   * @return result map names
   */
  String[] value();//映射關(guān)系名
}

在其他方法中引用這個(gè)映射關(guān)系,并在控制臺(tái)打印映射后的日志:

2). 當(dāng)然除了在通過注解來實(shí)現(xiàn)手動(dòng)結(jié)果映射外,我們還可以在XML文件中通過<resultMap>...</resultMap>標(biāo)簽來自定義映射結(jié)果集,從而實(shí)現(xiàn)手動(dòng)結(jié)果映射。

起別名

通過在SQL語句中對(duì)數(shù)據(jù)庫表字段名與實(shí)體類屬性名無法映射的列起別名,使得數(shù)據(jù)庫表中字段名的別名與實(shí)體類屬性名一致實(shí)現(xiàn)映射。

在配置文件中開啟駝峰命名

打開配置文件application.properties中駝峰轉(zhuǎn)換的開關(guān)

# 配置Mybatis的駝峰命名自動(dòng)轉(zhuǎn)換,使數(shù)據(jù)庫表中字段名和實(shí)體類屬性間實(shí)現(xiàn)蛇形命名和駝峰命名的自動(dòng)映射
mybatis.configuration.map-underscore-to-camel-case=true

如果數(shù)據(jù)庫表中字段名與實(shí)體類屬性名符合駝峰命名規(guī)則,MyBatis會(huì)自動(dòng)通過駝峰命名規(guī)則實(shí)現(xiàn)自動(dòng)映射。駝峰命名規(guī)則:abc_xyz => abcXyz

  • 數(shù)據(jù)庫表中字段名:abc_xyz
  • 實(shí)體類中屬性名:abcXyz

這里做一個(gè)特別補(bǔ)充:通常我們?cè)诒4嫘畔⒌臅r(shí)候,需要記錄這個(gè)操作的id號(hào)來保存操作記錄。所以當(dāng)我們保存完信息后需要獲取到保存信息的id號(hào),這時(shí)候可以通過MyBatis中提供的主鍵返回功能來獲取。

Options(useGeneraateKeys = true, keyProperty = "id"),通過這個(gè)注解聲明要使用返回的主鍵,并將這個(gè)主鍵映射到keyProperty指定的類屬性中。

這時(shí)候可以通過MyBatis中提供的主鍵返回功能來獲取。

Options(useGeneraateKeys = true, keyProperty = "id"),通過這個(gè)注解聲明要使用返回的主鍵,并將這個(gè)主鍵映射到keyProperty指定的類屬性中。

到此這篇關(guān)于MyBatis中實(shí)現(xiàn)數(shù)據(jù)封裝的示例代碼的文章就介紹到這了,更多相關(guān)MyBatis 數(shù)據(jù)封裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • SpringBoot結(jié)合Quartz實(shí)現(xiàn)數(shù)據(jù)庫存儲(chǔ)

    SpringBoot結(jié)合Quartz實(shí)現(xiàn)數(shù)據(jù)庫存儲(chǔ)

    本文主要介紹了SpringBoot+Quartz+數(shù)據(jù)庫存儲(chǔ),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • mybatis實(shí)現(xiàn)查詢操作及獲得添加的ID

    mybatis實(shí)現(xiàn)查詢操作及獲得添加的ID

    這篇文章主要介紹了mybatis實(shí)現(xiàn)查詢操作及獲得添加的ID,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11
  • 圖文精講java常見分布式事務(wù)理論與解決方案

    圖文精講java常見分布式事務(wù)理論與解決方案

    對(duì)于分布式系統(tǒng),最簡(jiǎn)單的理解就是一堆機(jī)器對(duì)外提供服務(wù),相比單體服務(wù),它可以承受更高的負(fù)載,但是分布式系統(tǒng)也帶了一系列問題,今天帶大家搞懂和分布式相關(guān)的常見理論和解決方案
    2021-11-11
  • Mybatis-Plus根據(jù)自定義注解實(shí)現(xiàn)自動(dòng)加解密的示例代碼

    Mybatis-Plus根據(jù)自定義注解實(shí)現(xiàn)自動(dòng)加解密的示例代碼

    我們把數(shù)據(jù)存到數(shù)據(jù)庫的時(shí)候,有些敏感字段是需要加密的,從數(shù)據(jù)庫查出來再進(jìn)行解密,如果我們使用的是Mybatis框架,那就跟著一起探索下如何使用框架的攔截器功能實(shí)現(xiàn)自動(dòng)加解密吧,需要的朋友可以參考下
    2024-06-06
  • java批量下載將多個(gè)文件(minio中存儲(chǔ))壓縮成一個(gè)zip包代碼示例

    java批量下載將多個(gè)文件(minio中存儲(chǔ))壓縮成一個(gè)zip包代碼示例

    在Java應(yīng)用程序中有時(shí)我們需要從多個(gè)URL地址下載文件,并將這些文件打包成一個(gè)Zip文件進(jìn)行批量處理或傳輸,這篇文章主要給大家介紹了關(guān)于java批量下載將多個(gè)文件(minio中存儲(chǔ))壓縮成一個(gè)zip包的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • SpringBoot中實(shí)現(xiàn)@Scheduled動(dòng)態(tài)定時(shí)任務(wù)

    SpringBoot中實(shí)現(xiàn)@Scheduled動(dòng)態(tài)定時(shí)任務(wù)

    SpringBoot中的@Scheduled注解為定時(shí)任務(wù)提供了一種很簡(jiǎn)單的實(shí)現(xiàn),本文主要介紹了SpringBoot中實(shí)現(xiàn)@Scheduled動(dòng)態(tài)定時(shí)任務(wù),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • @Accessors(chain = true)注解報(bào)錯(cuò)的解決方案

    @Accessors(chain = true)注解報(bào)錯(cuò)的解決方案

    這篇文章主要介紹了@Accessors(chain = true)注解報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • springboot3整合knife4j詳細(xì)圖文教程(swagger增強(qiáng))

    springboot3整合knife4j詳細(xì)圖文教程(swagger增強(qiáng))

    開發(fā)api提供對(duì)應(yīng)的接口規(guī)范進(jìn)行聯(lián)調(diào)或并行開發(fā),api文檔管理必不可少,常用的Knife4j基于swagger(依賴已經(jīng)compile),可以進(jìn)行管理,下面這篇文章主要給大家介紹了關(guān)于springboot3整合knife4j的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Java使用Flyway實(shí)現(xiàn)數(shù)據(jù)庫版本控制的技術(shù)指南

    Java使用Flyway實(shí)現(xiàn)數(shù)據(jù)庫版本控制的技術(shù)指南

    在現(xiàn)代應(yīng)用開發(fā)中,數(shù)據(jù)庫結(jié)構(gòu)經(jīng)常隨著業(yè)務(wù)需求不斷演變,使用手動(dòng)SQL腳本管理數(shù)據(jù)庫版本,不僅容易出現(xiàn)錯(cuò)誤,還難以跟蹤和回滾,Flyway是一個(gè)強(qiáng)大的數(shù)據(jù)庫遷移工具,能夠幫助開發(fā)者高效管理和自動(dòng)化數(shù)據(jù)庫的版本控制,本文將介紹Flyway的基本功能及其在SpringBoot項(xiàng)目中的實(shí)踐
    2025-02-02
  • Spring中property-placeholder的使用與解析詳解

    Spring中property-placeholder的使用與解析詳解

    本篇文章主要介紹了Spring中property-placeholder的使用與解析詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05

最新評(píng)論

沙湾县| 凭祥市| 宁都县| 汉阴县| 确山县| 贡嘎县| 营山县| 洛南县| 隆化县| 彰化市| 长顺县| 资溪县| 台中市| 岳池县| 诸暨市| 定兴县| 肇庆市| 双峰县| 龙江县| 斗六市| 怀集县| 重庆市| 邹平县| 称多县| 石首市| 黄平县| 会宁县| 铜梁县| 沛县| 儋州市| 淮北市| 怀仁县| 汤阴县| 怀来县| 闻喜县| 曲靖市| 通道| 安吉县| 德钦县| 兴隆县| 曲松县|