MyBatis字段名和属性名不一样的解决方案

2023-09-14 16:28:20

一、给字段起别名,保持和属性名一样

    <! --List<Emp> getAllEmp( ); -->
    <select id="getAllEmp" resultType="Emp">
        select eid , emp_name empName , age , sex, email from t_emp
    </ select>

如上面的SQL语句将emp_name取别名为empName对应实体类的属性名。

二、设置全局配置,将_自动映射为驼峰(开启驼峰匹配)

开启驼峰匹配后,会将_自动映射为驼峰,如emp_name将会被映射为empName. 


在Spring Boot中,使用MyBatis时,可以通过在application.yml文件中设置以下参数来开启驼峰匹配:

mybatis:
  configuration:
    map-underscore-to-camel-case: true

 这样设置之后,MyBatis就会将数据库中的下划线分隔的字段名转换为Java中的驼峰式命名。例如,如果数据库中的字段名为user_name,则在Java中将会被映射为userName

 三、通过resultMap解决字段名和属性名的映射关系

resultMap:设置自定义映射

  • 属性:
    • id:表示自定义映射的唯一标识,不能重复
    • type:查询的数据要映射的实体类的类型
  • 子标签:
    • id:设置主键的映射关系
    • result:设置普通字段的映射关系
    • 子标签属性:
      • property:设置映射关系中实体类中的属性名
      • column:设置映射关系中数据库 表中的字段名
      • association:javaBean封装一个实体(多对一);
      • collection:用于javaBean封装一个集合(一对多)。
  • 若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射,即使字段名和属性名一致的属性也要映射,也就是全部属性都要列出来
<resultMap id="empResultMap" type="Emp">
	<id property="eid" column="eid"></id>
	<result property="empName" column="emp_name"></result>
	<result property="age" column="age"></result>
	<result property="sex" column="sex"></result>
	<result property="email" column="email"></result>
</resultMap>
<!--List<Emp> getAllEmp();-->
<select id="getAllEmp" resultMap="empResultMap">
	select * from t_emp
</select>

更多推荐

云原生之使用Docker部署Firefox浏览器

云原生之使用Docker部署Firefox浏览器一、Firefox浏览器介绍1.1Firefox简介1.2Firefox特点二、本次实践介绍2.1本地环境规划2.2本次实践简介三、本地环境检查3.1检查Docker服务状态3.2检查Docker版本3.3检查dockercompose版本四、下载Firefox镜像五、部

QCustomPlot绘图类详解(大白话)

本文假定你会使用Qt开发,但未接触过QCustomPlot绘图类或者是刚接触。如何往Qt中引入QCustomPlot首先,去官网下载最新版本的源码,注意是QCustomPlot.tar.gz这个文件,里面包含源码和示例。实际上,我们只需要qcustomplot.h和qcustomplot.h这两个源文件。将代码文件拷贝

设计模式:简单工厂、工厂方法、抽象工厂

参考Java设计模式之创建型:工厂模式详解(简单工厂+工厂方法+抽象工厂)-知乎工厂方法以生产手机为例,具体的UML图如下:这种方法的优点是对于用户来说,不再需要面对具体的生产逻辑,只需要将生产的安排工作和细节都交给工厂类去做。缺点是在这种情况下,如果想要增加一种商品,比如华为手机,不仅需要新增一个实现抽象产品的接口,

MYSQL性能优化——SQL 性能分析

SQL性能分析⭐执行计划实际项目开发中,由于我们不知道实际查询的时候数据库里发生了什么事情,数据库软件是怎样扫描表、怎样使用索引的,因此,我们能感知到的就只有sql语句运行的时间,在数据规模不大时,查询是瞬间的,因此,在写sql语句的时候就很少考虑到性能的问题。但是随着数据规模增大,如千万、亿的时候,我们运行同样的sq

opencv形状目标检测

1.圆形检测OpenCV图像处理中“找圆技术”的使用-图像处理-双翌视觉OpenCV图像处理中“找圆技术”的使用,图像处理,双翌视觉https://www.shuangyi-tech.com/news_224.htmlopencv找圆心得,模板匹配比霍夫圆心好用-知乎1相比较霍夫找直线算法,霍夫找圆心算法极其复杂现在还

kubesphere中间件部署

微服务部署前中间件部署一、MySQL部署1.1使用Docker实现MySQL主从复制dockerrun-p3307:3306--namemysql-master\-v/mydata/mysql/master/log:/var/log/mysql\-v/mydata/mysql/master/data:/var/lib/

家居设计软件Live Home 3D Pro mac中文版特点介绍

LiveHome3DPromac是一款专业的3D家居设计软件,可以帮助用户轻松创建和设计家居平面图和3D模型,并进行渲染和虚拟漫游。​​​​​​​​LiveHome3DPromac软件特点1.界面友好:LiveHome3DPro的界面友好,操作简单方便,即使是初学者也可以轻松使用。2.支持多平台:LiveHome3DP

C++ STL库 list(链表)

C++Lists(链表)赋值(assign)语法:voidassign(input_iteratorstart,input_iteratorend);voidassign(size_typenum,constTYPE&val);assign()函数以迭代器start和end指示的范围为list赋值或者为list赋值nu

HTML5 游戏开发实战 | 黑白棋

黑白棋,又叫反棋(Reversi)、奥赛罗棋(Othello)、苹果棋、翻转棋。黑白棋在西方和日本很流行。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。黑白棋的棋盘是一个有8×8方格的棋盘。开始时在棋盘正中有两白两黑四个棋子交叉放置,黑棋总是先下子。(1)下子规则。把自己颜色的棋子放在棋盘的空格上,而当

Docker基础入门:Docker基础总结篇--超详细

Docker基础入门:Docker基础总结篇[docker3要素、docker安装配置、容器使用、镜像管理发布]一、Docker3要素1.1、镜像(Image)1.2、容器(Container)1.3、仓库(Registry)1.4、总结二、Docker安装配置2.1、卸载旧版Docker2.2、需要的安装包依赖2.3

【容器】docker基础使用

文章目录一、docker常见命令二、注意事项Reference一、docker常见命令docker是一个容器化平台。Docker介绍:(官网:https://www.docker.com/get-started)Docker是一个开源的应用容器引擎,你可以把它当作一个轻量级的虚拟机。它可以让开发者打包他们的应用以及依赖

热文推荐