resultMap标签与resultType的异同

这篇博客介绍了MyBatis中resultMap和resultType的区别。resultMap允许在列名与实体属性不一致时进行映射,提供了更灵活的数据封装方式,而resultType则要求列名与属性名完全匹配。示例展示了如何使用resultMap进行复杂查询,包括分页和条件查询。文章强调,在需要字段映射或者字段名不一致时,使用resultMap更为合适。
摘要由CSDN通过智能技术生成
<!-- 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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码敲上天.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值