溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mybatis中resultMap的Colum和property怎么用

發(fā)布時間:2022-01-10 14:15:51 來源:億速云 閱讀:197 作者:iii 欄目:開發(fā)技術

本文小編為大家詳細介紹“Mybatis中resultMap的Colum和property怎么用”,內容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“Mybatis中resultMap的Colum和property怎么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    resultMap的Colum和property屬性

    1: resultMap標簽

    當我們的數(shù)據(jù)庫字段與實體類的屬性不一致時,就需要使用該標簽進行一一映射。

    2:使用情況

    2.1 簡單查詢
     <resultMap id="這個resultMap的id" type="對應實體類的全限定類名">
             <id column="id" property="id"></id>
            <result column="username" property="name"></result>
            <result column="author" property="author"></result>
            <result column="number" property="number"></result>
           .............
           colum對應數(shù)據(jù)庫的字段,property對應實體類的屬性
        </resultMap>

    他表示對數(shù)據(jù)按照什么樣的規(guī)則進行一一映射,如:

      <!-- 根據(jù)編號查找書籍-->
        <select id="SelectbooksByNumber" parameterType="String"  resultMap="名字">
            select * from book where number=#{number};
        </select>

    上面的查找結果按照你給的resultMap的對應規(guī)則進行映射。

    2.2 一對一

    需要注意的是你sql語句查出來的列名稱是別名,那你就要填別名,就不是你數(shù)據(jù)庫的列名稱了。

    返回結果:User
    User中含有Role屬性集合 一對多的關系
    JavaType是用來指定pojo中屬性的類型

    2.3 一對多

    同樣和一對一 一樣需要注意列名稱。

    返回結果:User
    User中含有Role屬性集合 一對多的關系
    JavaType是用來指定pojo中屬性的類型,
    ofType指定的是 映射到list集合屬性中pojo的類型
    其中Role屬性集合為List

    pojo

    public class User implements Serializable {
        private Integer id;
        private String username;
        private String password;
        private String salt;
        private Integer status; // 用戶狀態(tài) 0: 正常   1:禁用   2:鎖定
    
        //角色集合
        private List<Role> roles;

    role表

    Mybatis中resultMap的Colum和property怎么用

    user表

    Mybatis中resultMap的Colum和property怎么用

    user與role的映射表

    Mybatis中resultMap的Colum和property怎么用

    resultMap對column和property的理解

    首先,先看看這張圖,看能不能一下看明白:

    Mybatis中resultMap的Colum和property怎么用

    select元素有很多屬性(這里說用的比較多的)

    • id:命名空間唯一標識,可以被用來引用這條語句

    • parameterType:將會傳入這條語句的參數(shù)類的完全限定名或者別名

    • resultType:從這條語句要返回的期望類型的類的完全限定名或別名(這里注意下集合類型,應該是集合可以包含的類型,不能是集合本身),重要:使用resultType或resultMap,但不能同時使用。

    • resultMap:命名引用外部的resultMap,其名稱要和外部的resultMap元素的ID名稱一致,用于映射其結果到實體類指定對象中。

    什么時候我們知道使用resultMap,什么時候又使用resultType呢?

    ①當去select一張表時,可以使用resultType,這些情況下,MyBatis會在幕后自動創(chuàng)建一個ReusltMap,基于屬性名來映射到JavaBean屬性上

    ②所以在使用resultMap時,就必須要寫上resultMap相對應的xml

    ③為了方便我們開發(fā)出錯,在沒有特別要求的情況下,column名可以完全和property名稱一致,否則當我們沒有對應上的時候,數(shù)據(jù)庫匹配不到,會將某某參數(shù)值變?yōu)榇髮懀瑢е挛覀儽緛慝@取小寫的參數(shù)名,結果沒有獲取到,后臺報錯,得不償失??!

    最后說下

    sql中比如,有 andm.id = #{id ,jdbcType=VARCHAR } 要標明jdbcType為什么呢?

    解釋:

    如果你映射了一個javabean,MyBatis通??梢詳喽愋停椖坷锖枚喽家獙懀乙膊恢罏樯叮?,然而,如果你映射到的是比如:HashMap,那么應該明確指定的jdbcType來保證所需的行為

    讀到這里,這篇“Mybatis中resultMap的Colum和property怎么用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業(yè)資訊頻道。

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

    AI