<!-- resultMap最终还是要将结果映射到pojo上,type就是指定映射到哪一个pojo -->
<resultMap type="com.ssm.dao.User" id="UserMap">
<!-- id:设置ResultMap的id -->
<!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id -->
<id property="id" column="id" />
<!-- 定义普通属性 -->
<!-- property:主键在pojo中的属性名 -->
<!-- column:主键在数据库中的列名 -->
<result property="userId" column="user_id" />
<result property="number" column="number" />
<result property="createtime" column="createtime" />
<result property="note" column="note" />
</resultMap>
结果就可以封装到pojo类型中
1.1 区分:resultType和resultMap
基本映射 :(resultType)使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。(数据库,实体,查询字段,这些全部都得一一对应)
高级映射 :(resultMap) 如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。(高级映射,字段名称可以不一致,通过映射来实现)。
resultType和resultMap功能类似 ,都是返回对象信息 ,但是resultMap要更强大一些 ,可自定义。因为resultMap要配置一下,表和类的一一对应关系,所以说就算你的字段名和你的实体类的属性名不一样也没关系,都会给你映射出来,但是,resultType就比较鸡肋了,必须字段名一样,比如说 cId和c_id 这种的都不能映射 。
例如用法:一般操作结果类型是单一基本类型用resultType,实体用resultMap.
<select id="query" resultMap="Clazz">
select * from tb_clazz
<include refid="ClazzFindCriteria"/>
<if test="offset!=null and rows!=null">limit ${offset} , ${rows}</if>
</select>
<select id="count" resultType="int">
select count(1) from tb_clazz
<include refid="ClazzFindCriteria"/>
</select>