resultMap和resultType區別詳解


resultmap與resulttype的區別為:對象不同、描述不同、類型適用不同

一、對象不同

1、resultmap:resultMap如果查詢出來的列名和pojo的屬性名不一致,通過定義一個resultMap對列名和pojo屬性名之間作一個映射關系。

2、resultType:resultType使用resultType進行輸出映射,只有查詢出來的列名和pojo中的屬性名一致,該列才可以映射成功。

二、描述不同

1、resultmap:resultMap對於一對一表連接的處理方式通常為在主表的pojo中添加嵌套另一個表的pojo,然后在mapper.xml中采用association節點元素進行對另一個表的連接處理。

2、resulTtype:resultType無法查詢結果映射到pojo對象的pojo屬性中,根據對結構集查詢遍歷的需要選擇使用resultType還是resultMap。適用於單表查詢。

三、類型適用不同

1、resultmap:mybatis中在查詢進行select映射的時候,返回類型可以用resultType,也可以用resultMap。

2、resulttype:resultType是直接表示返回類型的,而resultMap則是對外部ResultMap的引用,但是resultType跟resultMap不能同時存在。

resultMap示例:

<resultMap id="userRoleListMapSelect" extends="userMap"
               type="com.example.simple.model.SysUser">
        <collection property="roleList"
                    fetchType="lazy"
                    column="{userId = id}"
                    select="com.example.simple.mapper.RoleMapper.selectRoleByUserId"/>
    </resultMap>
    <select id="selectAllUserAndRolesSelect" resultMap="userRoleListMapSelect">
        select
        u.id,
        u.user_name,
        u.user_password,
        u.user_email ,
        u.user_info ,
        u.head_img,
        u.create_time
        from sys_user u
        where u.id = #{id}

    </select>

resultType示例:

<select id="selectRolesByUserAndRole"
            resultType="com.example.simple.model.SysRole">
        SELECT r.id,
                r.role_name,
                r.enabled,
                r.create_by,
                r.create_time
                FROM mybatis.sys_user u
                inner join mybatis.sys_user_role ur on u.id = ur.user_id
                INNER JOIN mybatis.sys_role r on ur.role_id = r.id
                where u.id = #{user.id}  and r.enabled = #{role.enabled}

    </select>


免責聲明!

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



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