mybatis-puls中的resultMap數據映射

mybatis-puls resultMap數據映射

resultType

resultType可以把查詢結果封裝到pojo類型中,但必須pojo類的屬性名和查詢到的數據庫表的字段名一致。

如果sql查詢到的字段與pojo的屬性名不一致,則需要使用resultMap將字段名和屬性名對應起來,進行手動配置封裝,將結果映射到pojo中!

resultMap

resultMap可以實現將查詢結果映射為復雜類型的pojo,比如在查詢結果映射對象中包括pojo和list實現一對一查詢和一對多查詢。

  • 數據庫字段:user_id,
  • 實體類字段:userId
  • 需要手動配置設置resultMap

Mapper中基本查詢語句

<!-- 查詢所有的訂單數據 -->
    <!-- resultMap:填入配置的resultMap標簽的id值 -->
    <select id="queryOrderAll" resultMap="orderResultMap">
        SELECT id, user_id,
        number,
        createtime, note FROM `order`
    </select>

resultMap中字段映射

<!-- resultMap最終還是要將結果映射到pojo上,type就是指定映射到哪一個pojo -->
    <!-- id:設置ResultMap的id -->
    <resultMap type="order" id="orderResultMap">
        <!-- 定義主鍵 ,非常重要。如果是多個字段,則定義多個id -->
        <!-- property:主鍵在pojo中的屬性名 -->
        <!-- column:主鍵在數據庫中的列名 -->
        <id property="id" column="id" />
 
        <!-- 定義普通屬性 -->
        <result property="userId" column="user_id" />
        <result property="number" column="number" />
        <result property="createtime" column="createtime" />
        <result property="note" column="note" />
    </resultMap>

Mybatis ResultMap結果集映射

當我們的POJO中的字段與數據庫中的字段不一致時,在利用resultType進行結果集映射時,不一致的字段將會被賦值為null,這時我們可以利用ResultMap映射進行賦值

POJO

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private String password;
}

數據庫字段

在這裡插入圖片描述

ResultType

<select id="getUserList" resultType="User">
    select * from user;
</select>

可以出數據庫中是pwd,而pojo中是password,這樣利用resultType是無法映射的,password查出來的結果為null

在這裡插入圖片描述

ResultMap

<select id="getUserList" resultMap="UserMap">
    select * from user;
</select>
<resultMap id="UserMap" type="User">
    <result column="id" property="id"/>
    <result column="name" property="name"/>
    <result column="pwd" property="password"/>
</resultMap>

我們用resultMap替換resultType

UserMap與下面resultMap裡的id屬性的值保持一致即可

type為返回值類型,這裡我之所以是User是因為我起瞭別名,如果沒有起別名要寫出完整的路徑

在resultMap中,column代表數據庫中的列,也就是數據庫裡的字段,property為數據庫中的字段映射的結果,這裡我們與pojo保持一致即可,數據庫中的pwd被映射為password,pojo裡的password也就能賦值成功瞭

在這裡插入圖片描述

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: