亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

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

手動結(jié)果映射

1). 在Mapper持久層接口方法上,通過@Results@Result注解進(jìn)行手動結(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 "";//指定類中要被映射的屬性名
}

觀察控制臺手動結(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)系,并在控制臺打印映射后的日志:

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

起別名

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

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

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

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

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

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

這里做一個(gè)特別補(bǔ)充:通常我們在保存信息的時(shí)候,需要記錄這個(gè)操作的id號來保存操作記錄。所以當(dāng)我們保存完信息后需要獲取到保存信息的id號,這時(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Spring AOP的入門教程

    Spring AOP的入門教程

    Spring AOP是Spring框架的一個(gè)模塊,本文主要介紹了Spring AOP的入門教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • Java獲取手機(jī)號碼歸屬地的實(shí)現(xiàn)

    Java獲取手機(jī)號碼歸屬地的實(shí)現(xiàn)

    這篇文章主要介紹了Java獲取手機(jī)號碼歸屬地的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • JAVA三種攔截方式詳解(原生過濾器Filter、springMVC攔截器、aop切面)

    JAVA三種攔截方式詳解(原生過濾器Filter、springMVC攔截器、aop切面)

    在Java開發(fā)中方法攔截是一種常見的技術(shù),可以用于在方法執(zhí)行前后添加額外的邏輯或修改方法的行為,這篇文章主要給大家介紹了關(guān)于JAVA三種攔截方式的相關(guān)資料,文中介紹的方式分別是原生過濾器Filter、springMVC攔截器、aop切面,需要的朋友可以參考下
    2024-05-05
  • IDEA的Terminal無法執(zhí)行g(shù)it命令問題

    IDEA的Terminal無法執(zhí)行g(shù)it命令問題

    這篇文章主要介紹了IDEA的Terminal無法執(zhí)行g(shù)it命令問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • jenkins配置詳細(xì)指南(附j(luò)dk多個(gè)版本配置)

    jenkins配置詳細(xì)指南(附j(luò)dk多個(gè)版本配置)

    Jenkins是一款CICD(持續(xù)集成與持續(xù)交付)工具,Jenkins可以幫你在寫完代碼后,一鍵完成開發(fā)過程中的一系列自動化部署的工作,這篇文章主要給大家介紹了關(guān)于jenkins配置的相關(guān)資料,文中還附j(luò)dk多個(gè)版本配置指南,需要的朋友可以參考下
    2024-02-02
  • SpringBoot學(xué)習(xí)篇之@Valid與@Validated的區(qū)別

    SpringBoot學(xué)習(xí)篇之@Valid與@Validated的區(qū)別

    @Valid是使用Hibernate?validation的時(shí)候使用,@Validated是只用Spring?Validator校驗(yàn)機(jī)制使用,下面這篇文章主要給大家介紹了關(guān)于SpringBoot學(xué)習(xí)篇之@Valid與@Validated區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • IDEA中的Structure模塊使用圖文詳解

    IDEA中的Structure模塊使用圖文詳解

    IDEA 的 Structure 功能,也是在看代碼中一個(gè)十分常用的功能,最通用的方法,就是點(diǎn)擊 IDEA 左下角的 Structure 標(biāo)簽頁即可,本文重點(diǎn)介紹IDEA中的Structure模塊使用詳解,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • java final 和instanceof 關(guān)鍵字的區(qū)別

    java final 和instanceof 關(guān)鍵字的區(qū)別

    這篇文章介紹了java final 和instanceof 關(guān)鍵字的區(qū)別,有需要的朋友可以參考一下
    2013-09-09
  • 編寫Java代碼對HDFS進(jìn)行增刪改查操作代碼實(shí)例

    編寫Java代碼對HDFS進(jìn)行增刪改查操作代碼實(shí)例

    這篇文章主要介紹了Java代碼對HDFS進(jìn)行增刪改查操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • spring級聯(lián)屬性賦值的兩種方式解析

    spring級聯(lián)屬性賦值的兩種方式解析

    這篇文章主要介紹了spring級聯(lián)屬性賦值的兩種方式解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01

最新評論