ResultMap与ResultType是Mybatis基于xml配置开发中sql语言的一种标签
ResultType:这个属性是配置sql查询出来的结果类型,通常配置为实体pojo类,基本数据类型,引用类型。
比如:此处sql返回结果是count,那么resultType就应该是int
<select id="findTotal" resultType="int">
-- parameterType 表示参数类型
select count(users) from user;
</select>
如果返回的是结果集,我们可以创建一个实体类来对返回结果进行封装
<select id="findAll" resultType="User">
select * from user;
</select>
但有的业务场景下,sql查询出来的结果与我们创建的实体类属性不符,这个时候就需要使用到ResultMap了
ResultMap:该标签属性也是为了配置Mybatis查询的返回结果,不过它主要是为了解决查询出来的结果与配置实体类属性名称和数据库列名不符合的问题。
比如:
<resultMap id="userMap" type="User">
<!-- 主键字段的对应,property为实体类属性名,users为数据库字段名-->
<id property="实体类主键属性名" column="数据库表主键列名"></id>
<!-- 非主键的约束-->
<result property="实体类属性名" column="数据库表列名"></result>
<result property="实体类属性名" column="数据库表列名"></result>
<result property="实体类属性名" column="数据库表列名"></result>
<result property="实体类属性名" column="数据库表列名"></result>
<result property="实体类属性名" column="数据库表列名"></result>
<result property="实体类属性名" column="数据库表列名"></result>
</resultMap>
<select id="findAll" resultMap="userMap">
select * from user;
</select>
resultType和resultMap的区别
resultType和resultMap在使用上最大的区别就是resultType使用时实体类的属性名要和数据库表的列名一一对应,resultMap是mybatis框架为了解决实体类属性和数据库表列名不能对应上而创建的一种解决方案。
版权声明:本文为qq_59957710原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。