Java日记2018-07-12-sbs整合5

2018-07-12  本文已影响0人  hayes0420

1 昨天遇到的问题

通过mybatis动态代理的方式查询数据库中的信息成功,但是结果返回不是期望的;
观察后发现user类与数据库中的字段名并没有完全一致,修改user类与数据库名保持一致,问题解决;

2 那么问题来了,是否有方法让数据库字段与user字段不一致的情况下,自动完成映射吗?

答案当然是可以,参考文章https://blog.csdn.net/u010376788/article/details/77512992
为了避免丢失,在此也记录一下:
两种解决方案:

  1. 在使用 SQL 语句的时候,为每个字段定义别名;
    例子:
<select id="selectWithAlias" parameterType="int" resultType="Order">
    select order_id id, order_no orderNo, order_price price
    from orders
    where order_id = #{id}
</select>
  1. 使用 MyBatis 映射文件的 resultMap 标签。
image.png

例子

<select id="selectWithMapping" parameterType="int" resultMap="OrderMapping">
    select order_id, order_no, order_price
    from orders
    where order_id = #{id}
</select>
<!-- 通过<resultMap>映射实体类属性名和表的字段名对应关系 -->
<resultMap id="OrderMapping" type="Order">
    <!-- id属性来映射主键字段 -->
    <id column="order_id" property="id" javaType="int"/>
    <!-- result属性映射非主键字段 -->
    <result column="order_no" property="orderNo" javaType="String"/>
    <result column="order_price" property="price"/>
</resultMap>

3 下一步计划,查看mybatis动态代理的原理

上一篇下一篇

猜你喜欢

热点阅读