Mybatis 实体类和表字段不一致解决方案

来源:互联网 发布:调用外部js文件 编辑:程序博客网 时间:2024/05/23 13:39

http://www.cnblogs.com/xdp-gacl/p/4264425.html

使用MyBatis进行查询操作时无法查询出相应的结果的问题以及针对问题采用的两种办法:

  解决办法一: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上了,这种方式是通过在sql语句中定义别名来解决字段名和属性名的映射关系的。

  解决办法二: 通过来映射字段名和实体类属性名的一一对应关系。这种方式是使用MyBatis提供的解决方式来解决字段名和属性名的映射关系的。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的例如namespace="me.gacl.mapping.orderMapper"就是me.gacl.mapping(包名)+orderMapper(orderMapper.xml文件去除后缀) --><mapper namespace="me.gacl.mapping.orderMapper">    <!--         根据id查询得到一个order对象,使用这个查询是查询不到我们想要的结果的,        这主要是因为实体类的属性名和数据库的字段名对应不上的原因,因此无法查询出对应的记录     -->    <select id="getOrderById" parameterType="int"         resultType="me.gacl.domain.Order">        select * from orders where order_id=#{id}    </select>    <!--         根据id查询得到一个order对象,使用这个查询是可以正常查询到我们想要的结果的,        这是因为我们将查询的字段名都起一个和实体类属性名相同的别名,这样实体类的属性名和查询结果中的字段名就可以一一对应上     -->    <select id="selectOrder" parameterType="int"         resultType="me.gacl.domain.Order">        select order_id id, order_no orderNo,order_price price from orders where order_id=#{id}    </select>    <!--     根据id查询得到一个order对象,使用这个查询是可以正常查询到我们想要的结果的,    这是因为我们通过<resultMap>映射实体类属性名和表的字段名一一对应关系 -->    <select id="selectOrderResultMap" parameterType="int" resultMap="orderResultMap">        select * from orders where order_id=#{id}    </select>    <!--通过<resultMap>映射实体类属性名和表的字段名对应关系 -->    <resultMap type="me.gacl.domain.Order" id="orderResultMap">        <!-- 用id属性来映射主键字段 -->        <id property="id" column="order_id"/>        <!-- 用result属性来映射非主键字段 -->        <result property="orderNo" column="order_no"/>        <result property="price" column="order_price"/>    </resultMap></mapper>
阅读全文
0 0
原创粉丝点击