美文网首页
Java日记2018-07-12-sbs整合5

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

作者: hayes0420 | 来源:发表于2018-07-12 07:00 被阅读0次

    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动态代理的原理

    相关文章

      网友评论

          本文标题:Java日记2018-07-12-sbs整合5

          本文链接:https://www.haomeiwen.com/subject/qcqlpftx.html