詳解Mybatis 「resultMap」中的autoMapping屬性

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.tfjy.sda.mapper.CourseMapper">
    <resultMap id="TopicList" type="com.tfjy.sda.bean.TopicReply" autoMapping="true">
        <id property="id" column="id"></id>
    </resultMap>
    <select id="queryCourse" resultType="com.tfjy.sda.bean.CourseUsers">
         SELECT
            cu.stu_number
         FROM
            course_users cu
        WHERE
            stu_name=#{courseUsers.stuName} AND course_id=#{courseUsers.courseId}
    </select>

</mapper>

resultMap

**resultType的主要作用是將查詢結果封裝到pojo中。(前提是pojo類中的
屬性名和查詢到的數據庫的字段名保持一致);

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

使用下列語句進行結果的映射:

<id property="id" column="id"></id>
<id property="iu" column="iu"></id>
<id property="ic" column="ic"></id>

pojo:
代表簡單無規則java對象
關於pojo詳情請查看鏈接:

https://www.jianshu.com/p/b934b0d72602

autoMapping

主要功能是完成結果集的映射,在映射是會將resultMapping中的字段按照名稱相同的方式映射到返回類型的對應屬性上,在映射時會自動忽略大小寫。比如查詢出的字段是Student但是返回類型中有一個屬性是student,並且有一個setstudent的方法,這樣是可以匹配成功的,能夠自動完成映射,將返回的值映射給對應的返回類型中的Id。

autoMapping 共有兩個屬性 true和false.true表示能夠自動映射,false則不會自動映射。

拓展

也可以通過第二種方式完成映射
resultType

 <select id="queryUser" resultType="com.tfjy.sda.bean.CourseUsers">
         SELECT
            cu.stu_number
         FROM
            course_users cu
        WHERE
            stu_name=#{courseUsers.stuName} AND course_id=#{courseUsers.courseId}
    </select>

當我們指定一個查詢語句的返回結果是,可以直接指定result Type 也可以指定result Map,實際上mybatis對結果集進行處理時都是通過的resultMap處理,當指定resultType時mybatis會自動生成一個空的resultMap,然後指定其對應的type爲我們指定的resultType類型。

Mybatis的自動映射策略默認是開啓的,而且默認是隻對非嵌套的resultMap進行自動映射。這是通過Mybatis的全局配置autoMappingBehavior參數配置的。它一共有三種取值,分別是NONE、PARTIAL和FULL。

l NONE表示不啓用自動映射

l PARTIAL表示只對非嵌套的resultMap進行自動映射

l FULL表示對所有的resultMap都進行自動映射

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章