Mapper文件里resultType 和 resultMap用法对比

1.区别

resultType 适合单个对象,且属性与查询结果的列名一一对应,resultMap则相反。

2.用法示例

1. resultType示例
如果 ServeCategoryResDTO 类的属性与查询结果的列名一一对应,且没有复杂的嵌套关系,可以使用 resultType 来指定查询结果的类型。例如:
xml

<select id="selectServeCategory" resultType="com.jzo2o.foundations.model.dto.response.ServeCategoryResDTO">
    SELECT serve_type_id, serve_type_name, serve_type_icon, city_code, serve_type_sort_num
    FROM serve_category
</select>

上面的例子中,查询语句的结果将会直接映射到 ServeCategoryResDTO 类的属性。
2. resultMap 示例
如果 ServeCategoryResDTO 类的属性与查询结果的列名不一致,或者存在复杂的嵌套关系,可以使用 resultMap 配置来定义映射关系。例如:

xml
<select id="findServeIconCategoryByRegionId" resultMap="ServeCategoryMap">
        SELECT
            type.id as serve_type_id,
            type.name as serve_type_name,
            type.serve_type_icon,
            serve.city_code,
            serve.id as serve_id,
            item.id as serve_item_id,
            item.name as serve_item_name,
            item.serve_item_icon,
            item.sort_num as serve_item_sort_num
        FROM
            serve
                inner JOIN serve_item AS item ON item.id = serve.serve_item_id
                inner JOIN serve_type AS type ON type.id = item.serve_type_id
        WHERE
            serve.region_id = #{regionId}
          AND serve.sale_status = 2
        ORDER BY
            type.sort_num,
            item.sort_num

    </select>
    <resultMap id="ServeCategoryMap" type="com.jzo2o.foundations.model.dto.response.ServeCategoryResDTO">
        <!--id映射主键字段-->
        <id column="serve_type_id" property="serveTypeId"></id>
        <!--result映射普通字段-->
        <result column="serve_type_name" property="serveTypeName"></result>
        <result column="serve_type_icon" property="serveTypeIcon"></result>
        <result column="city_code" property="cityCode"></result>
        <!--column 数据库中的字段名-->
        <!--property 实体类中对应的属性(也就是你想返回类里的数据名) 该关键字可以省略... -->
        <!--ofType 是javaType中的单个对象类型-->
        <!-- serveResDTOListServeCategoryMap的一个List数组,也需要手动映射 -->
        <collection property="serveResDTOList" ofType="com.jzo2o.foundations.model.dto.response.ServeSimpleResDTO">
            <id column="serve_id" property="id"></id>
            <result column="serve_item_id" property="serveItemId"></result>
            <result column="serve_item_name" property="serveItemName"></result>
            <result column="serve_item_icon" property="serveItemIcon"></result>
            <result column="serve_item_sort_num" property="serveItemSortNum"></result>
        </collection>
    </resultMap>

2.1 返回数据图示
返回数据图例

上面的例子中,通过 resultMap 配置定义了 ServeCategoryResDTO 类与查询结果之间的映射关系,并实现了对 serveResDTOList 属性的嵌套映射。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值