原文链接:https://blog.csdn.net/zx48822821/java/article/details/79050735

因为数据库一般设置为表的字段不区分大小写,所以数据库中表的字段通常是以 _ 来进行词组划分的,比如 user 表中字段名会有: user_id、user_name、user_pwd :

create table user(
user_id int pramary key not null,
user_name varchar() not null,
user_pwd varchar() not null
)

但是 User 的实体类一般会写为:

public class User{
private int userId ;
private String userName;
private String userPwd;
}

这是由于 JAVA 是区分大小写的,可以采用驼峰标识来进行词组划分。而在这种情况下 Mybatis 无法完成字段的自动映射。但我们又不应该直接更改数据库及实体类。所以有解决该问题的三种方式:

1.起别名
在 SQL 语句中为字段名标记与实体类属性相同的名称:

<select id="selectUserById" resultType="User">
select
user_id as userId ,
user_name as userName,
user_pwd as userPwd,
from user
where user_id = #{userId}
</select>

2.resultMap指定映射关系

<resultMap type="User" id="UserResultMap">
<id column="user_id" property="userId"/>
<result column="user_name" property="userName"/>
<result column="user_pwd" property="userPwd"/>
</resultMap> <select id="selectUserById" resultMap="UserResultMap">
select
user_id,
user_name,
user_pwd,
from user
where user_id= #{user_id}
</select>

注意:
1.使用resultMap时,在select语句配置中,要有resultMap替换原来的resultType。
2.resultMap中的column要与查询到的字段名一致,property要与实体类的属性一致。

3.Mybatis 全局属性 mapUnderscoreToCamelCase
在通常情况下,java中的实体类中的属性一般是采用驼峰命名命名的,而数据库中表的字段则用下划线区分字母。在这种情况下,Mybatis提供了一个全局属性mapUnderscoreToCamelCase来解决两者名字不一致的问题。

<settings>
<!--其他配置... -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--其他配置... -->
</settings>

注意:因为该属性是全局属性,所以需要配置在Mybatis的配置文件中,而不是Mapper.xml映射文件中。

MyBatis 实体类属性与表字段不一致的更多相关文章

  1. Mybatis实体类属性与数据库字段不一致解决办法

    例如:实体类  String userName     数据库:name 解决办法一: 通过给字段加别名,别名写成实体类属性一 eg:select name userName from student ...

  2. Mybatis——实体类属性名和数据库字段名不同时的解决方案

    数据库的字段: 对应的实体类: 方案一: 在XML映射文件中使用的resultMap,优点:可以被重复使用. <resultMap id="BaseResultMap" ty ...

  3. YbSoftwareFactory 代码生成插件【十九】:实体类配合数据库表字段进行属性扩展的小技巧

    实体类通常需要和数据库表进行了ORM映射,当你需要添加新的属性时,往往同时也需要在数据库中添加相应的字段并配置好映射关系,同时可能还需对数据访问组件进行重新编译和部署才能有效.而当你开始设计一个通用数 ...

  4. Mybatis 使用Mybatis时实体类属性名和表中的字段名不一致

    开发中,实体类中的属性名和对应的表中的字段名不一定都是完全相同的,这样可能会导致用实体类接收返回的结果时导致查询到的结果无法映射到实体类的属性中,那么该如何解决这种字段名和实体类属性名不相同的冲突呢? ...

  5. Mybatis中resultMap的作用-解决实体类属性名和数据库字段不一致

    解决实体类属性名和数据库字段不一致

  6. KO ------- 表中字段名和实体类属性名不一致

    -----------------------siwuxie095 KO ------- 表中字段名和实体类属性名不一致 如果数据库表中的字段名和实体类的属性名不一致,那么在查询时, 相应字段的结果就 ...

  7. MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013307.html 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这 ...

  8. MyBatis入门学习教程-解决字段名与实体类属性名不相同的冲突

    在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突. 一.准备演示需要使用的表和数据 CREATE TAB ...

  9. MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突

    在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突. 一.准备演示需要使用的表和数据 CREATE TAB ...

随机推荐

  1. Vue全局组件创建三种方法

    <my-com1></my-com1> <my-com2></my-com2> <template id="tmp1"> ...

  2. js 遍历删除数组

    $(function(){ var aa = [1,1,2,3,3,4,4,5]; alert(aa); for (var i = aa.length-1;i >= 0 ;i--) { if ( ...

  3. 简单的认识Linux

    一:电脑硬件种类说明 1.  服务器的分类: <1>外观分类:机架式,塔式,刀片式/服务器. <2>尺寸分类:1u,2u,3u <3>性能分类:pc服务器,小型机服 ...

  4. C# 数据操作系列 - 18 让Dapper更强的插件

    0. 前言 在前一篇中我们讲到了Dapper的应用,但是给我们的感觉Dapper不像个ORM更像一个IDbConnection的扩展.是的,没错.在实际开发中我们经常用Dapper作为对EF Core ...

  5. 【Ubuntu】快捷键

    版本:Ubuntu18.04 1. 终端(terminal ) alt + ctrl + t # 打开终端 shift + shift + t # 新建终端标签页 ctrl + c # 强制停止程序运 ...

  6. python异常1

    异常的层次结构: BaseException [所有异常的基类] +-- SystemExit [解释器请求退出] +-- KeyboardInterrupt [用户中断执行(通常是输入^C)] +- ...

  7. BST and Heap详解

    BST(Binary Search Tree) 基本特点: 二叉树 集合中的数据具有可比较大小的关键码 数据之间满足BST特性 中序遍历可得到一个递增的数据序列(可作为判断一棵二叉树是否是BST的方法 ...

  8. 常用docker命令备忘录

    查看镜像 docker images 查看运行中的容器 docker ps 删除镜像 docker rmi 容器id 直接删除所有镜像 docker rmi `docker images -q` 直接 ...

  9. Rocket - debug - TLDebugModuleInner - Hart Bus Access

    https://mp.weixin.qq.com/s/deNMEyJ1idJDVoZwwo0A1A 简单介绍TLDebugModuleInner中核心总线访问(Hart Bus Access). 参考 ...

  10. ASP.NET的Web网页如何进行分页操作(Demo举例)

    大概说一下思路,可以利用sql的 Offset/Fetch Next分页,点击这里 这里的Demo利用LINQ的写好的方法 //这里是某个表的列表 skip是跳过前面的多少条数据 take这是跳过前面 ...