1 昨天遇到的问题
通过mybatis动态代理的方式查询数据库中的信息成功,但是结果返回不是期望的;
观察后发现user类与数据库中的字段名并没有完全一致,修改user类与数据库名保持一致,问题解决;
2 那么问题来了,是否有方法让数据库字段与user字段不一致的情况下,自动完成映射吗?
答案当然是可以,参考文章https://blog.csdn.net/u010376788/article/details/77512992
为了避免丢失,在此也记录一下:
两种解决方案:
- 在使用 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>
- 使用 MyBatis 映射文件的 resultMap 标签。
例子
<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动态代理的原理
网友评论