resultmap的写法_mybatis的mapper.xml中resultMap标签的使用详解
1.前言
最近博主在做一个ssm框架的共享汽车管理系统,其中,数据库字段设计的有下划线方式,a_username,然后在写mapper.xml里面的sql语句的时候,一直出现查询语句查询的值为null的情况。或者是resultMap标签和驼峰规则不太明白的同学,可以看这里。
于是顺便梳理一下。
2.关于resultMap
2.1.什么是resultMap?
在mybatis中有一个resultMap标签,它是为了映射select查询出来结果的集合,其主要作用是将实体类中的字段与数据库表中的字段进行关联映射。
注意
当实体类中的字段与数据库表中的字段相同时,可以将resultMap标签中的关联关系忽略不写。
当实体类中的字段与数据库表中的字段不相同时,就需要在resultMap标签中将实体类字段与数据库字段一 一进行关联映射,或者开启驼峰规则,让它自动转换。
3.举例说明
3.1.数据库与实体类之间名称相同
数据库这么写:
然后对应写的实体类:
在mapper中的查询方式:
可以看到,是最常规的sql查询写法,这样就能正常的查询到数据库的数据。
当然这个时候开不开启驼峰规则都可以,比如在mybatis的配置文件中声明开启,也是一样的效果。
这是为什么呢?
顺便说几个关于实体类、数据库、json格式的知识。
数据库字段、索引对大小写是不敏感的,驼峰标识无意义;也就是你开不开启实际上都一样。
json 的规范格式是带有下划线的;比如:
{“id”:”1234”
“user_name”:”Lilan”;}
数据库字段和 bean 之间字段转换,主流 orm 工具都有映射转换支持,比如上图mybatis中开启的驼峰规则;
json 和 bean 之间字段转换,可以使用注解 @JsonProperty,比如写实体类的时候:@JsonProperty("user_name")
private String userName;
3.2.数据库与实体类之间不相同
比如常见的写法: 数据库使用下划线,与之映射的实体类中采用驼峰原则。
两种处理方式:
第一种:开启驼峰规则
数据库如下:
实体类如下:
解决:
在mybatis的配置文件里加入如上的配置,就基本不用property进行字段和实体和属性的映射
在进行sql查询和初始化实体时mybatis会为我们自动转化,写sql语句的时候也不必为有下划线的字段设置与实体类相同的别名。
如未加配置之前的sql查询语句为(使用别名):
select id, user_name as userName, user_sex as userSex, user_age as userAge from user
加入配置之后的sql语句为(直接使用数据库字段名):
select id, user_name, user_sex, user_age from user
Sql如下:
这样就能直接查询出数据库里面的数据。
第二种:使用resultMap标签来映射
比如数据库:
实体类如下:
然后在mapper.xml中书写resultMap标签,使得数据库字段和实体类
名称映射。(将实体类字段与数据库字段在标签中进行一一映射)
源码如下:
提醒:
要记得去mybatis的配置文件中查看是否已经去掉驼峰规则的声明。使用resultMap,就要禁用驼峰规则。如果不想改实体类的话,建议采用resultMap。
如图:
然后sql如下:
这样就能获取到对应的数据。sql语句书写的时候也可以直接采用数据库字段名。
4.总结
第一点:
1.mybatis配置文件设置了这项后,查询出来的字段如果带下划线,那么就会去掉下划线,
然后采用java驼峰规则。
比如数据库字段Parent_id,那么查询出来后,会转为parentid,然后去实体类Category匹配对应的字段。 这个时候实体类里就不能写有下划线,不然就匹配不上。会出现查询结果都是null值。
第二点:
1.当进行单表简单查询时且返回值类型是基本类型时,一般mapper的返回类型尽量使用resultType=”xxxx”;
2.当进行多表关联查询时,或者说xml中定义了相关的resultMap标签,那么就一般尽量使用resultMap=”xxxx”;
3.在mapper.xml当中,resultType和resultMap是不能同时使用。
第三点:
关于数据库字段和实体类名称不相同的时候,要么采用resultMap标签, 要么启用驼峰规则,但是两者不能同时使用。
到此这篇关于mybatis的mapper.xml中resultMap标签的使用详解的文章就介绍到这了,更多相关mybatis resultMap标签使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
本文标题: mybatis的mapper.xml中resultMap标签的使用详解
本文地址: http://www.cppcns.com/ruanjian/java/320115.html
resultmap的写法_mybatis的mapper.xml中resultMap标签的使用详解相关推荐
- html中iframe标签的用法详解
<iframe>是什么?html中iframe标签的用法详解 原创 2018-10-26 10:24:35 03690 经常进行页面布局的人对于HTML中的iframe标签一定不 ...
- html中使用volist要引入什么,thinkphp中volist标签使用案例详解
这次给大家带来thinkphp中volist标签使用案例详解,thinkphp中volist标签使用的注意事项有哪些,下面就是实战案例,一起来看一下. 属性: name(必须):要输出的数据模板变量 ...
- php中li标签,li标签有哪些属性?css中li标签的属性详解
在html中,我们经常会遇到li标签,那么li标签有哪些属性?下面我们来了解一下css中li标签的属性. 一:标签有哪些属性 在html中,使用css中li标签来控制样式,很多网站上都是点为开头,也有 ...
- html中按钮方法,html中button标签的使用详解
关于button按钮的介绍 知道:button是定义一个按钮,但是在表单中也有一个可以定义按钮,我们知道当的时候也是在网页上创建了一个按钮,现在要说的是个button这个标签和input里面的标签有怎 ...
- php中的ol标签,html5中ol标签的用法详解
这篇文章主要介绍了详解HTML5中ol标签的用法,是HTML5入门学习中的基础知识,需要的朋友可以参考下 定义和用法 标签定义有序列表. HTML 4.01 与 HTML 5 之间的差异 在 HTML ...
- iframe是什么?html中iframe标签的用法详解
经常进行页面布局的人对于HTML中的iframe标签一定不陌生,iframe标签是一个内联框架,说白了就是用来在当前 HTML 页面中嵌入另一个文档的.刚刚接触前端的小伙伴可能不知道html中ifra ...
- mapper.xml中大于、小于、不等于号的方法
目录 一.背景 二.解决方案一:使用转义字符 三.解决方案二: 四.参考文献 一.背景 项目中有一个联合查询的SQL一直很慢,总感觉无法再继续优化了,实际上还是有继续优化的方案的.具体方案如下:1.将 ...
- 转载的一片关于Mapper.xml中sql的相关技术点,供以后自己慢慢学习之用
1 Mapper.xml映射文件 需掌握动态sql(重点掌握)和pojo对象 Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybat ...
- MyBatis的mapper.xml中对于一个传参的多重判断
MyBatis中的mapper.xml中对于一个传递参数的多重判断 <where><if test="stockOrderNum!=null"><if ...
最新文章
- markdown一边写一边预览_如何用Markdown轻松排版知乎专栏文章?
- 数据分析师最终都会代码化的3点原因?!
- 如何进行I/O评估、监控、定位和优化?
- 【免费报名】挑战与机遇同在,大步迈进全真互联网时代
- 力扣.236二叉树的最近公共祖先
- 在“后台反复读取用户相册”?微信回应:最新版本将取消
- C语言程序设计 授课日历 2010年春季
- 设计模式读书笔记之结构型模式
- html刷浏览量,批量刷网页点击量工具
- wamp mysql_wamp中如何打开mysql
- 怎么创建自己的博客网站
- ubuntu22.04美化、办公、开发工具安装
- camtasia 2022标准版录制电脑屏幕视频教程
- GBase 8c产品高级特性介绍
- OpenLayers6 裁切地图(Layer Clipping)
- Uncaught SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse (<anonymous>)
- python列表元素筛选_Python如何筛选序列中的元素
- Ubuntu18状态栏调整位置,放置在屏幕下方
- discuz admin.php换名,discuz更换域名修改方法
- raid0两块硬盘损坏数据恢复过程