文档章节

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

求是科技
 求是科技
发布于 2015/10/21 15:19
字数 758
阅读 1885
收藏 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提供的解决方式来解决字段名和属性名的映射关系的。




© 著作权归作者所有

共有 人打赏支持
求是科技
粉丝 90
博文 438
码字总数 225859
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

Spring的Resttemplate发送带header的post请求

private HttpHeaders getJsonHeader() { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); ......

qiang123
昨天
1
0
Spring Cloud Gateway 之 Only one connection receive subscriber allowed

都说Spring Cloud Gateway好,我也来试试,可是配置了总是报下面这个错误: java.lang.IllegalStateException: Only one connection receive subscriber allowed. 困扰了我几天的问题,原来...

ThinkGem
昨天
19
0
学习设计模式——观察者模式

1. 认识观察者模式 1. 定义:定义对象之间一种一对多的依赖关系,当一个对象状态发生变化时,依赖该对象的其他对象都会得到通知并进行相应的变化。 2. 组织结构: Subject:目标对象类,会被...

江左煤郎
昨天
1
0
emoji

前言:随着iOS系统版本的升级,对原生emoji表情的支持也越来越丰富。emoji表情是unicode码中为表情符号设计的一组编码,当然,还有独立于unicode的另一套编码SBUnicode,在OS系统中,这两种编...

HeroHY
昨天
2
0
rabbitmq学习(二)

生产者消费者初级案列 ChannelUtils package com.hensemlee.rabbitmq;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.Connecti......

hensemlee
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部