Mybatis学习之数据库字段与实体属性的映射
目录
准备
问题
方式一:给查询的字段起别名
方式二:修改核心配置文件mybatis-config.xml
方式三:通过resultMap自定义映射
准备
我们的表的字段以及表数据如下
生成的实体类的属性如下
public class Emp {private Integer eid;private String empName;private Integer empAge;private String empSex;private String empEmail;}
问题
通过上面我们可以看到,实体类的属性值与数据库表的字段值并不是一样的,这跟我们之前处理User类的时候是不一样的,当时User类的属性与其对应的数据表字段是一样的。如果我们现在按照之前的思路来查找所有的Emp信息的话会出现什么问题呢?先看代码。
测试代码:@Testpublic void test1(){SqlSession sqlSession= SqlSessionUtil.getSqlSession();EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);List<Emp> emps = mapper.getAllEmp();emps.forEach(emp -> System.out.println(emp));}输出结果:
Emp(eid=1, empName=null, empAge=null, empSex=null, empEmail=null)
Emp(eid=2, empName=null, empAge=null, empSex=null, empEmail=null)
Emp(eid=3, empName=null, empAge=null, empSex=null, empEmail=null)
Emp(eid=4, empName=null, empAge=null, empSex=null, empEmail=null)
Emp(eid=5, empName=null, empAge=null, empSex=null, empEmail=null)
通过上面的测试结果,我们可以看到并不是所有的属性都被赋值了。究其原因就是因为实体的属性与其对应表的字段不一致。那么,如何解决这个问题呢,我们可以通过以下3三种方式。
方式一:给查询的字段起别名
起的别名与实体类对应的属性一致,在配置文件中可以这样写。对于名称已经一样的可以不用起别名,比如eid。
测试结果为
Emp(eid=1, empName=zhangsan, empAge=45, empSex=男, empEmail=bac@126.com)
Emp(eid=2, empName=李四, empAge=55, empSex=男, empEmail=bac@126.com)
Emp(eid=3, empName=王五, empAge=21, empSex=男, empEmail=bac@126.com)
Emp(eid=4, empName=赵六, empAge=32, empSex=女, empEmail=bac@126.com)
Emp(eid=5, empName=田七, empAge=33, empSex=女, empEmail=bac@126.com)
方式二:修改核心配置文件mybatis-config.xml
在核心配置文件中加入以下代码
<settings><setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
测试结果
Emp(eid=1, empName=zhangsan, empAge=45, empSex=男, empEmail=bac@126.com)
Emp(eid=2, empName=李四, empAge=55, empSex=男, empEmail=bac@126.com)
Emp(eid=3, empName=王五, empAge=21, empSex=男, empEmail=bac@126.com)
Emp(eid=4, empName=赵六, empAge=32, empSex=女, empEmail=bac@126.com)
Emp(eid=5, empName=田七, empAge=33, empSex=女, empEmail=bac@126.com)
方式三:通过resultMap自定义映射
结果
Emp(eid=1, empName=zhangsan, empAge=45, empSex=男, empEmail=bac@126.com)
Emp(eid=2, empName=李四, empAge=55, empSex=男, empEmail=bac@126.com)
Emp(eid=3, empName=王五, empAge=21, empSex=男, empEmail=bac@126.com)
Emp(eid=4, empName=赵六, empAge=32, empSex=女, empEmail=bac@126.com)
Emp(eid=5, empName=田七, empAge=33, empSex=女, empEmail=bac@126.com)
resultMap:设置自定义映射
属性:
id:表示自定义映射的唯一标识,不能重复
type:查询的数据要映射的实体类的类型
子标签:
id:设置主键的映射关系
result:设置普通字段的映射关系
子标签属性:
property:设置映射关系中实体类中的属性名
column:设置映射关系中表中的字段名
Mybatis学习之数据库字段与实体属性的映射相关推荐
- MyBatis多表查询之XML和注解实现(resultMap结果集映射配置数据库字段与实体类属性一一映射)
MyBatis多表查询 多表模型分类 一对一:在任意一方建立外键,关联对方的主键. 一对多:在多的一方建立外键,关联一的一方的主键. 多对多:借助中间表,中间表至少两个字段,分别关联两张表的主键. 数 ...
- springboot-mybatis数据库字段和实体字段名称不一致,查询值为null
springboot-mybatis数据库字段和实体字段名称不一致,查询值为null 一.问题和原因 二.我的解决,总结参考了:https://www.cnblogs.com/yif0118/p/14 ...
- 数据库字段与Java属性映射关系
我们在使用mybatis框架的时候,在查询语句中,如果数据库列名与最后接收结构的java对象的属性名不同,就不会把结果值传输进去. 比如: 下面解决方式都是利用这张表. 解决这种名称不匹配一共有3种方 ...
- jeecg扩展字段,非实体属性
jsp 添加对应的字段名称 后台
- mybatis读取oralce数据库字段是clob类型两种方法
一.用流的方法将clob转为String类型 (要记的将流关闭) @Override public Map<String, Object> queryreviewbaseerror ...
- mybatis返回某一字段_8.mybatis的基本工作流程(2.0)※
mybatis的基本工作流程 1.读取配置文件,配置文件包含数据库连接信息和Mapper映射文件或者Mapper包路径. 2.有了这些信息就能创建SqlSessionFactory,SqlSessio ...
- Dapper数据库字段(列)与实体属性名不一致,通过Column特性自动注入映射
一.前言 Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的.Dapper只有一个代码文件,完全开源,你可以放在项 ...
- 数据库字段类型、实体类字段类型、mapper文件jdbcType三者对应关系
数据库字段类型.实体类字段类型.mapper文件jdbcType三者对应关系: 数据库字段类型 实体类字段类型 mapper文件jdbcType bigint Long JdbcType.BIGINT ...
- Mybatis学习总结(结合个人理解)
Mybatis 1. MyBatis简介 1.1 什么是Mybatis MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 My ...
最新文章
- Struts2中EL表达式取值
- VC2010下Qt5的中文乱码问题
- 前端学习(2963):跨域问题
- java gradle 资源访问_java在gradle工程访问src/test/resources目录下的资源配置文件
- 官方华为鸿蒙os2.0,华为“新平板”6月2日登场,搭载麒麟9000,首发预装鸿蒙OS!...
- 家庭自建服务器风险,服务器虚拟化可能面临的五个风险
- DayDayUp:2021年的自我总结
- MATLAB之ODE
- MATLAB-多目标线性规划问题
- Lauterbach trace32与 jlink
- java messagedigest,在C#中的Java MessageDigest类
- Kali 2020.4下载安装详细教程
- 不用u盘安装linux真机,无需u盘和光盘安装linux
- java:一个求面积、体积小程序
- 布谷鸟沙盒分析静态文件_布谷鸟cuckoo
- linux ipcs字段含义 共享内存删除 ipcs dest状态
- 保研经历-清华计算机、北大、中科院计算所
- Failed to load language: zh-CN from的解决办法
- nginx出现499现象及原因
- android 模拟器手机如何添加文件到sd卡?