resultType和resultMap是Mybatis基于xml配置开发过程中sql语句所在标签的一种属性,它们的特性如下:
1. resultType:该属性是为了配置mybatis查询的返回结果类型,如果返回值类型是整型数据,该属性处可以配置int,如查询数量:
<select id="findTotal" resultType="int">-- parameterType 表示参数类型select count(users) from user;</select>
如果查询的返回值类型是String,resultType属性处就应该配置为String。
另外,如果查询结果为对象,并且实体类属性的名称可以和数据库中表的列名相互对应,在resultType属性处可以直接填写实体类所在包的位置,例如:
<select id="findAll" resultType="domain.User">select * from user;</select>
实体类所在的包如下图所示
2.resultMap:该属性也是为了配置mybatis查询的返回结果类型,不过该属性主要还是为了解决实体类属性名称和数据库表的列名不匹配的问题,言外之意就是如果我们所写的实体类的属性的名称和数据库表的列名不能一一对应,那么我们使用mybatis进行查询时就会报错,或者查出空的结果。所以,resultMap属性就是为了解决实体类属性和数据库列名不匹配的查询。
resultMap的使用方法:
在mapper标签下配置resultMap标签
<resultMap id="userMap" type="domain.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>
3.resultType和resultMap的区别
resultType和resultMap在使用上最大的区别就是resultType使用时实体类的属性名要和数据库表的列名一一对应,resultMap是mybatis框架为了解决实体类属性和数据库表列名不能对应上而创建的一种解决方案。