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>