欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis屬性名和字段名不一致的問題解決方法

 更新時間:2023年12月19日 10:29:20   作者:666-LBJ-666  
這篇文章給大家詳細(xì)介紹了MyBatis屬性名和字段名不一致的問題解決,文中有詳細(xì)的代碼示例和圖文展示供大家參考,對大家的學(xué)習(xí)或工作有一定的參考價(jià)值,需要的朋友可以參考下

解決屬性名和字段名不一致的問題

1. 問題

數(shù)據(jù)庫中的字段

在這里插入圖片描述

新建一個項(xiàng)目,拷貝之前的,測試實(shí)體類字段不一致的情況

在這里插入圖片描述

測試出現(xiàn)問題

在這里插入圖片描述

// select * from user where id = #{id}
// 類型處理器
// select id,name,pwd from user where id = #{id}

解決方法:

  • 起別名:修改sql語句
<select id="getUserById" resultType="com.kuang.pojo.User">
    select id,name,pwd as password from USER where id = #{id}
</select>

2. resultMap

結(jié)果集映射

id name pwd

id name password

解決簡單的結(jié)果映射名的問題

<!--結(jié)果集映射-->
<resultMap id="UserMap" type="User">
    <!--column數(shù)據(jù)庫中的字段,property實(shí)體類中的屬性-->
    <result column="id" property="id"></result>
    <result column="name" property="name"></result>
    <result column="pwd" property="password"></result>
</resultMap>

<select id="getUserList" resultMap="UserMap">
    select * from USER
</select>

在MyBatis中, 元素用于映射查詢結(jié)果到Java對象。在 中, 元素用于將查詢結(jié)果的列映射到Java對象的屬性。在進(jìn)行映射時,MyBatis會嘗試根據(jù)Java對象屬性的類型和查詢結(jié)果的列的類型進(jìn)行自動轉(zhuǎn)換,但有時需要手動配置映射關(guān)系,以確保類型匹配。

在這里插入圖片描述

舉例代碼:

<resultMap id="exampleResultMap" type="com.example.domain.User">
    <id property="id" column="user_id" />
    <result property="username" column="user_name" />
    <result property="email" column="user_email" />
    <result property="birthDate" column="user_birth_date" />
</resultMap>

在這個例子中:

property 屬性指定了Java對象的屬性名稱。

column 屬性指定了數(shù)據(jù)庫查詢結(jié)果中的列名稱。
 

MyBatis根據(jù)屬性和列的名稱進(jìn)行映射,但類型匹配仍然很重要如果數(shù)據(jù)庫中的列類型與Java對象屬性的類型不匹配,可能會導(dǎo)致類型轉(zhuǎn)換錯誤。在這種情況下,你可能需要手動指定類型轉(zhuǎn)換器

例如,如果數(shù)據(jù)庫中的列VARCHAR 類型,而Java對象的屬性是 java.util.Date 類型,你可能需要使用類型轉(zhuǎn)換器來將字符串轉(zhuǎn)換為日期。可以通過在 元素中添加 javaType 和 jdbcType 屬性來手動指定類型

<resultMap id="exampleResultMap" type="com.example.domain.User">
    <id property="id" column="user_id" />
    <result property="username" column="user_name" />
    <result property="email" column="user_email" />
    <result property="birthDate" column="user_birth_date" javaType="java.util.Date" jdbcType="VARCHAR" />
</resultMap>

在這個例子中,javaType 屬性指定了Java對象屬性的類型,而 jdbcType 屬性指定了數(shù)據(jù)庫列的類型。這有助于確保MyBatis正確進(jìn)行類型轉(zhuǎn)換。

3. javaType和jdbcType的對應(yīng)關(guān)系

當(dāng)你在MyBatis中使用 元素時,可以通過指定 javaType 和 jdbcType 屬性來配置Java對象屬性與數(shù)據(jù)庫列的類型對應(yīng)關(guān)系。以下是一些常見的Java類型與JDBC類型的對應(yīng)關(guān)系:

javaTypejdbcType
String類型StringVARCHAR
Integer類型IntegerintINTEGER
Long類型LonglongBIGINT
Double類型Double 或 doubleDOUBLE
Float類型Float 或 floatREAL
Boolean類型Boolean 或 booleanBIT
Date類型java.util.Date 或 java.sql.DateDATE
Timestamp類型java.sql.TimestampTIMESTAMP
BigDecimal類型java.math.BigDecimalDECIMAL
Byte類型Byte 或 byteTINYINT

4.resultMap和resultType的區(qū)別?

在MyBatis中,resultMap 和 resultType 都用于配置查詢結(jié)果的映射關(guān)系,但它們有一些關(guān)鍵的區(qū)別。

resultType:

resultType 是一種簡化的映射配置方式,用于指定查詢結(jié)果的類型。

你只需要指定一個Java類的全限定名,MyBatis會自動映射查詢結(jié)果到該類的實(shí)例。

resultType 使用簡單,適用于簡單的查詢,但對于復(fù)雜的映射關(guān)系,可能顯得不夠靈活。

示例:

<select id="getUserById" resultType="com.example.domain.User">
    SELECT * FROM users WHERE id = #{id}
</select>

resultMap:

resultMap 是一種更為靈活和強(qiáng)大的映射配置方式,允許你詳細(xì)定義查詢結(jié)果與Java對象之間的映射關(guān)系。
你可以指定每個查詢結(jié)果列與Java對象屬性的映射關(guān)系,同時還可以配置復(fù)雜的映射關(guān)系,如繼承、關(guān)聯(lián)關(guān)系等。
resultMap 通常用于復(fù)雜的查詢,或者在需要手動配置映射關(guān)系時使用。
示例:

<resultMap id="userResultMap" type="com.example.domain.User">
    <id property="id" column="user_id"/>
    <result property="username" column="user_name"/>
    <result property="email" column="user_email"/>
    <!-- 其他映射關(guān)系配置 -->
</resultMap>
<select id="getUserById" resultMap="userResultMap">
    SELECT * FROM users WHERE id = #{id}
</select>

總體而言,resultMap 更加靈活,適用于復(fù)雜的映射需求,而 resultType 則更為簡單,適用于簡單的映射場景。在實(shí)際應(yīng)用中,根據(jù)具體需求選擇使用 resultMap 或 resultType。

  • resultMap 元素是 MyBatis 中最重要最強(qiáng)大的元素。
  • ResultMap 的設(shè)計(jì)思想是,對簡單的語句做到零配置,對于復(fù)雜一點(diǎn)的語句,只需要描述語句之間的關(guān)系就行了,如上。
  • ResultMap 的優(yōu)秀之處——你完全可以不用顯式地配置它們,需要什么,配置什么就好了,如上:需要pwd和password的映射,其它的可以不寫。

如果這個世界總是這么簡單就好了。

以上就是MyBatis屬性名和字段名不一致的問題解決的詳細(xì)內(nèi)容,更多關(guān)于MyBatis屬性名和字段名不一致的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java?ResourceBundle讀取properties文件方式

    java?ResourceBundle讀取properties文件方式

    這篇文章主要介紹了java?ResourceBundle讀取properties文件方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • IDEA2022 提示更新 TKK失敗請檢查網(wǎng)絡(luò)連接的問題

    IDEA2022 提示更新 TKK失敗請檢查網(wǎng)絡(luò)連接的問題

    這篇文章主要介紹了IDEA2022 提示:更新 TKK 失敗,請檢查網(wǎng)絡(luò)連接,本文給大家分享解決方案,對idea2022提示更新TKK失敗感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • 詳細(xì)聊聊SpringBoot中動態(tài)切換數(shù)據(jù)源的方法

    詳細(xì)聊聊SpringBoot中動態(tài)切換數(shù)據(jù)源的方法

    在大型分布式項(xiàng)目中,經(jīng)常會出現(xiàn)多數(shù)據(jù)源的情況,下面這篇文章主要給大家介紹了關(guān)于SpringBoot中動態(tài)切換數(shù)據(jù)源的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • 詳解springboot啟動時是如何加載配置文件application.yml文件

    詳解springboot啟動時是如何加載配置文件application.yml文件

    這篇文章主要介紹了詳解springboot啟動時是如何加載配置文件application.yml文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 利用Java編寫24點(diǎn)小游戲的實(shí)例代碼

    利用Java編寫24點(diǎn)小游戲的實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于如何利用Java編寫24點(diǎn)小游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • java使用xpath和dom4j解析xml

    java使用xpath和dom4j解析xml

    XPath是一門在XML文檔中查找信息的語言,下面介紹一下java使用xpath和dom4j解析xml的示例,大家參考使用吧
    2014-01-01
  • Java項(xiàng)目防止SQL注入的幾種方法總結(jié)

    Java項(xiàng)目防止SQL注入的幾種方法總結(jié)

    SQL注入是比較常見的網(wǎng)絡(luò)攻擊方式之一,在客戶端在向服務(wù)器發(fā)送請求的時候,sql命令通過表單提交或者url字符串拼接傳遞到后臺持久層,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,下面這篇文章主要給大家總結(jié)介紹了關(guān)于Java項(xiàng)目防止SQL注入的幾種方法,需要的朋友可以參考下
    2023-04-04
  • SpringBoot傳給前端Long類型精度丟失的解決方案

    SpringBoot傳給前端Long類型精度丟失的解決方案

    最近在做項(xiàng)目的時候,遇到了一個Long類型傳給前端之后,接收到的數(shù)值不對的情況,我一開始以為是前端接收數(shù)據(jù)有問題,后來經(jīng)過查找,了解到這是一個Long類型精度丟失問題,于是寫這篇文章記錄下來,也探究一下為什么會發(fā)生這種情況,需要的朋友可以參考下
    2025-03-03
  • springboot @Configuration和@Componment的區(qū)別及說明

    springboot @Configuration和@Componment的區(qū)別及說明

    這篇文章主要介紹了springboot @Configuration和@Componment的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java順序查找算法詳解

    Java順序查找算法詳解

    順序查找又稱線性查找,主要用于在線性表中進(jìn)行查找。順序查找通常分為對一般的無序線性表的順序查找和對按關(guān)鍵字有序的順序表的順序查找,下面我們來一探究竟
    2022-08-08

最新評論