myBatis学习笔记(3)——实体属性名与表字段名不匹配问题

问题

    <select id="getUser" parameterType="String"
        resultType="User">
        select * from user where username=#{username}
    </select>
  • 这是映射文件的配置,myBatis在查询出结果之后,会帮我们把查询结果一一对应地填充到User对象中
  • 但是,它怎么知道如何去对应查询出来的字段和属性呢?只有在实体的属性名和表的字段名相同时,才能自动一一对应。
  • 那么,如果属性名和表的字段名不一样怎么办?有两种解决方案

解决方案

现有实体类Order:
这里写图片描述
数据库表orders:
这里写图片描述

  • 解决方案一
    <select id="getOrder" parameterType="int"
        resultType="Order">
        select order_id  id,order_name orderName from orders where order_id=#{id}
    </select>

查询的时候使用别名,就可以解决

  • 解决方案二:
    <!-- 配置一个映射关系 -->
    <resultMap type="Order" id="orderResultMap">
        <id property="id" column="order_id"/>
        <result property="orderName" column="order_name"/>
    </resultMap>

    <!-- 查询结果集引用配好的映射关系 -->
    <select id="getOrder" parameterType="int"
        resultMap="orderResultMap">
        select order_id ,order_name from orders where order_id=#{id}
    </select>
  • resultMap中,id标签专门为主键服务,当然,全部都用result
  • property为实体类属性
  • column为表的列名
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值