ResultType与ResultMap的区别

112 阅读1分钟
  • 如果只是返回一个值,比如说String或者int,那直接用resultType就行了
  • 如果是返回一个Map,可以用 resultType="Map"
  • 如果返回的是POJO类,二者都可以用,下面代码展示用法。 当数据库字段名与POJO类字段名不一致时,二者都可以用别名。

POJO:

@Data
public class Users {
    private Long id;
    private String userName;
    private Integer sex;
}

ResultType:

<select id="getUsersType" resultType="Users">
    select user_name userName, sex from t_users
</select>

ResultMap:

<resultMap id="userMap" type="Users">
    <id property="id" column="id"/>
    <result property="userName" column="user_name"/>
    <result property="sex" column="sex"/>
</resultMap>

<select id="getUsersMap" resultMap="userMap">
    select id, user_name, sex from t_users
</select>

<!-- property是实体类的字段名,column是数据库返回的字段名或别名。 -->


对于简单的映射,resultType和resultMap区别不大。但是resultMap功能更强大,可以提供级联查询,缓存等功能。