文档章节

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

求是科技
 求是科技
发布于 2015/10/21 15:19
字数 758
阅读 1838
收藏 2
点赞 0
评论 0

一、创建订单表

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

java高级工程师面试问题集结号(four)

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

布道牛 ⋅ 2016/09/09 ⋅ 0

继承 Crud Mapper 的--mybatis-mapper

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

jingrenlang ⋅ 2015/08/05 ⋅ 1

jingrenlang/mybatis-mapper

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

jingrenlang ⋅ 2015/08/05 ⋅ 0

springboot下使用mybatis

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

金琥 ⋅ 2017/11/25 ⋅ 0

MyBatis学习整理0

学习java的基本都会“ssh”,我也不例外,其中就包括了hibernate,当时感觉挺神奇的,去年开始接触mybatis,一对比发现,这mybatis有不少优点。 下面分享一下我在学习mybatis的时候整理的内容...

阿信sxq ⋅ 2016/08/19 ⋅ 2

Mybatis 通用 Mapper 3.4.0 发布

MyBatis 通用 Mapper 极其方便的使用MyBatis单表的增删改查,支持单表操作,不支持通用的多表联合查询。通用 Mapper 可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以...

Liuzh_533 ⋅ 2017/02/21 ⋅ 8

spring boot(六):如何优雅的使用mybatis

这两天启动了一个新项目因为项目组成员一直都使用的是mybatis,虽然个人比较喜欢jpa这种极简的模式,但是为了项目保持统一性技术选型还是定了 mybatis。到网上找了一下关于spring boot和myb...

纯洁的虫纸 ⋅ 2016/11/07 ⋅ 0

springboot:如何优雅的使用mybatis

这两天启动了一个新项目因为项目组成员一直都使用的是mybatis,虽然个人比较喜欢jpa这种极简的模式,但是为了项目保持统一性技术选型还是定了 mybatis。到网上找了一下关于spring boot和myb...

Victor_Cindy1 ⋅ 2017/12/13 ⋅ 0

springboot(六):如何优雅的使用mybatis

这两天启动了一个新项目因为项目组成员一直都使用的是mybatis,虽然个人比较喜欢jpa这种极简的模式,但是为了项目保持统一性技术选型还是定了 mybatis。到网上找了一下关于spring boot和myb...

ityouknow ⋅ 2016/11/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 55分钟前 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部