文档章节

myBatis-- 字段名与实体类属性名冲突解决办法

求是科技
 求是科技
发布于 2015/10/21 15:19
字数 758
阅读 1864
收藏 2

一、创建订单表

order_id         order_name          order_price

1                        苹果                      6.5

2                        香蕉                        3

3.                       桔子                         2

二、定义实体类

public Order

{

    private Integer id;

    private String name;

    private float price;

}

三、xml文件代码

查不到数据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>        
    
</mapper>

解决方法如下,方法一

直接将 返回的数据库字段名与实体类的属性名 设置成一样,返回类型(resultType)直接设置成接收的实体类名.

<mapper namespace="me.gacl.mapping.orderMapper">
     
     <!--
         根据id查询得到一个order对象,使用这个查询是可以正常查询到我们想要的结果的,
         这是因为我们将查询的字段名都起一个和实体类属性名相同的别名,这样实体类的属性名和查询结果中的字段名就可以一一对应上
     -->
    <select id="selectOrder" parameterType="int" resultType="me.gacl.domain.Order">
            select order_id id, order_name name,order_price price from orders where order_id=#{id}
    </select>        
    
</mapper>

方法二

注意,这里使用了resultMap转换了一下,所以要将resultType改为resultMap。

<mapper namespace="me.gacl.mapping.orderMapper">
     
     <!--
         根据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="name" column="order_name"/>
        <result property="price" column="order_price"/>
    </resultMap>        
</mapper>

总结:

使用MyBatis进行查询操作时无法查询出相应的结果,但是纯sql又能查出数据时,需要考虑下是不是字段对应实体类的属性出现问题,解决方法有如下两点

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

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




© 著作权归作者所有

共有 人打赏支持
求是科技
粉丝 89
博文 453
码字总数 228281
作品 0
成都
后端工程师
MyBatis实体属性与表的字段不对应的解决方案

1、通过在查询的SQL语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上,这种方式是通过在SQL语句中定义别名来解决字段名和属性...

easonjim
2017/10/12
0
0
java高级工程师面试问题集结号(four)

1:mybaties如何实现数据库表名和实体名不一致的情况 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上了,这...

布道牛
2016/09/09
38
0
继承 Crud Mapper 的--mybatis-mapper

Mybatis-mapper Mapper 继承 CrudMapper 后,无需编写 mapper.xml 文件,即可获得 CRUD 功能 MyBatis 的 sql 默认加载规则 MyBatis通过xml、SqlProvider两种方式获取sql,xml的优先级高于Sql...

jingrenlang
2015/08/05
2.7K
1
jingrenlang/mybatis-mapper

#mybatis-mapper Mapper继承CrudMapper后,无需编写mapper.xml文件,即可获得CRUD功能 MyBatis的sql默认加载规则 MyBatis通过xml、SqlProvider两种方式获取sql,xml的优先级高于SqlProvider...

jingrenlang
2015/08/05
0
0
springboot下使用mybatis

springboot下使用mybatis 使用mybatis-spring-boot-starter即可。 简单来说就是mybatis看见spring boot这么火,于是搞出来mybatis-spring-boot-starter这个解决方案来与springboot更好的集成...

金琥
2017/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day58-20180816-流利阅读笔记-待学习

苹果市值破万亿,iPhone 会涨价吗? Lala 2018-08-16 1.今日导读 苹果教父乔布斯曾经说过:“活着就是为了改变世界。”虽然他在 56 岁时就遗憾离世,但他极具创新和变革的精神早已深埋进苹果...

aibinxiao
29分钟前
4
0
[雪峰磁针石博客]python3快速入门教程1 turtle绘图-2函数

菲波那契序列: >>> # Fibonacci series:... # the sum of two elements defines the next... a, b = 0, 1>>> while b < 10:... print(b)... a, b = b, a+b...112......

python测试开发人工智能安全
今天
0
0
java环境变量配置最正确的方式

原贴:https://blog.csdn.net/qq_40007997/article/details/79784711,十分详细,亲测有效

kitty1116
今天
0
0
49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
2
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部