目录

准备

问题

方式一:给查询的字段起别名

方式二:修改核心配置文件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学习之数据库字段与实体属性的映射相关推荐

  1. MyBatis多表查询之XML和注解实现(resultMap结果集映射配置数据库字段与实体类属性一一映射)

    MyBatis多表查询 多表模型分类 一对一:在任意一方建立外键,关联对方的主键. 一对多:在多的一方建立外键,关联一的一方的主键. 多对多:借助中间表,中间表至少两个字段,分别关联两张表的主键. 数 ...

  2. springboot-mybatis数据库字段和实体字段名称不一致,查询值为null

    springboot-mybatis数据库字段和实体字段名称不一致,查询值为null 一.问题和原因 二.我的解决,总结参考了:https://www.cnblogs.com/yif0118/p/14 ...

  3. 数据库字段与Java属性映射关系

    我们在使用mybatis框架的时候,在查询语句中,如果数据库列名与最后接收结构的java对象的属性名不同,就不会把结果值传输进去. 比如: 下面解决方式都是利用这张表. 解决这种名称不匹配一共有3种方 ...

  4. jeecg扩展字段,非实体属性

    jsp 添加对应的字段名称 后台

  5. mybatis读取oralce数据库字段是clob类型两种方法

    一.用流的方法将clob转为String类型 (要记的将流关闭) @Override     public Map<String, Object> queryreviewbaseerror ...

  6. mybatis返回某一字段_8.mybatis的基本工作流程(2.0)※

    mybatis的基本工作流程 1.读取配置文件,配置文件包含数据库连接信息和Mapper映射文件或者Mapper包路径. 2.有了这些信息就能创建SqlSessionFactory,SqlSessio ...

  7. Dapper数据库字段(列)与实体属性名不一致,通过Column特性自动注入映射

    一.前言 Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的.Dapper只有一个代码文件,完全开源,你可以放在项 ...

  8. 数据库字段类型、实体类字段类型、mapper文件jdbcType三者对应关系

    数据库字段类型.实体类字段类型.mapper文件jdbcType三者对应关系: 数据库字段类型 实体类字段类型 mapper文件jdbcType bigint Long JdbcType.BIGINT ...

  9. Mybatis学习总结(结合个人理解)

    Mybatis 1. MyBatis简介 1.1 什么是Mybatis MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 My ...

最新文章

  1. Struts2中EL表达式取值
  2. VC2010下Qt5的中文乱码问题
  3. 前端学习(2963):跨域问题
  4. java gradle 资源访问_java在gradle工程访问src/test/resources目录下的资源配置文件
  5. 官方华为鸿蒙os2.0,华为“新平板”6月2日登场,搭载麒麟9000,首发预装鸿蒙OS!...
  6. 家庭自建服务器风险,服务器虚拟化可能面临的五个风险
  7. DayDayUp:2021年的自我总结
  8. MATLAB之ODE
  9. MATLAB-多目标线性规划问题
  10. Lauterbach trace32与 jlink
  11. java messagedigest,在C#中的Java MessageDigest类
  12. Kali 2020.4下载安装详细教程
  13. 不用u盘安装linux真机,无需u盘和光盘安装linux
  14. java:一个求面积、体积小程序
  15. 布谷鸟沙盒分析静态文件_布谷鸟cuckoo
  16. linux ipcs字段含义 共享内存删除 ipcs dest状态
  17. 保研经历-清华计算机、北大、中科院计算所
  18. Failed to load language: zh-CN from的解决办法
  19. nginx出现499现象及原因
  20. android 模拟器手机如何添加文件到sd卡?

热门文章

  1. C语言中的malloc与free函数
  2. 神州数码无线AP接入备忘
  3. python编程绘制楼梯_Python走楼梯问题解决方法示例
  4. 安卓查看内存读写测试软件_装机小贴士:内存双通道重要吗
  5. 【OBS编译】基于VS2019的W10下的编译
  6. nofollow标签是什么?有用吗?如何添加?
  7. 华为手机 微信悬浮窗无法返回
  8. 日日煮的IPO大菜,煮熟了?
  9. Android——intent分享图片到微信好友、朋友圈、QQ
  10. IntelliJ IDEA-配置文件位置