resultMap結果集映射解決屬性名和字段不一致問題


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

1.出現的問題

數據庫中的字段

image-20210417163434479

新建一個項目,拷貝之前的,測試實體類與數據庫字段不一致的情況

public class User {
    private int id;
    private String name;
    private String password;
}

現在測試出現問題

image-20210417164131036

image-20210417164259835

image-20210417164356837

解決方法:

方法一:最簡單的在sql語句中直接起別名

<select id="getUserById" resultType="user">
    select id,name,pwd as password from mybatis.user where id = #{id}
</select>

方法二就是使用下面的resultMap

2、resultMap

結果集映射

首先定義一個resultMap的標簽做數據庫字段與實體類屬性的映射(注:可以只映射不相同的字段與屬性)

<!--resultMap叫結果集映射,
    就是實現將sql查詢出來的結果集映射到實體類里-->
<resultMap id="UserMap" type="User">
    <!--column數據庫的字段,property實體類中的屬性-->
    <!--resultMap可以什么哪個字段不一樣轉哪個字段,
        並不用數據庫列和實體類屬性全部寫完-->
    <!-- <result column="id" property="id"/>
        <result column="name" property="name"/>-->
    <result column="pwd" property="password"/>
</resultMap>

然后select標簽取引用它,如下:

<select id="getUserById" resultMap="UserMap">
    select * from mybatis.user where id = #{id}
</select>

這就是結果集映射的用法。

下面時截取的Mybatis官網上的一些針對resultMap的重要信息:

  • resultMap 元素是 MyBatis 中最重要最強大的元素。
  • ResultMap 的設計思想是,對簡單的語句做到零配置,對於復雜一點的語句,只需要描述語句之間的關系就行了。
  • 相同的字段和屬性名不用做映射也可。
  • 如果這個世界總是這么簡單就好了。(哈哈哈哈)

碼雲地址:https://gitee.com/mo18/Mybatis-Study.git 這篇文章在mybatis-03模塊!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM