mybatis 解决从列名到属性名的自动映射失败问题


Posted in Java/Android onJune 30, 2021

问题背景

从数据库中取出数据映射到实体类时,实体类中只有部分属性映射成功,其余属性值皆为null。

问题描述

如下图AreaDao.xml文件中描述了queryArea()方法从数据库获取Area对象的各个属性值的查询过程,最后执行查询结果显示只有属性priority被成功地赋值

AreaDao.xml

<select id="queryArea" resultType="com.imooc.wechatpro.model.Area">
        SELECT area_id, area_name, priority, create_time, last_edit_time
        FROM tb_area
        ORDER BY priority
        DESC
</select>
AreaDaoTest.java
Area area = areaDao.queryAreaById(3);
area = {Area@7489} 
 areaId = null
 areaName = null
 priority = {Integer@7513} 312
 createTime = null
 lastEditTime = null

数据库中对应的表tb_area:

mysql> select * from tb_area;
+---------+-----------+----------+-------------+----------------+
| area_id | area_name | priority | create_time | last_edit_time |
+---------+-----------+----------+-------------+----------------+
|       1 | 南苑      |      302 | NULL        | NULL           |
|       2 | 北苑      |      307 | NULL        | NULL           |
|       3 | 东苑      |      312 | NULL        | NULL           |
+---------+-----------+----------+-------------+----------------+

原因

实体类Area中的属性使用的是驼峰命名规则,默认情况下无法与数据库表的列名相匹配

Area.java
public class Area {
    private Integer areaId;
    private String areaName;
    private Integer priority;
    private Date createTime;
    private Date lastEditTime;
    ······
}

解决办法

在mybatis的配置文件mybatis-config.xml中将mapUnderscoreToCamelCase设为true,关于配置文件mybatis-config.xml的各种属性配置可以参考官方文档

<configuration>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
</configuration>

当然这还没完,为了让文件mybatis-config.xml生效,需要将该文件的路径添加到全局配置文件application.properties(or application.yml)的配置中,如

application.properties
mybatis.config-location=classpath:mybatis-config.xml

在这里,我的mybatis-config.xml文件在resources目录下,因此使用路径classpath:mybatis-config.xml

mybatis 无法找到映射错误

mybatis 中报错:

Result Maps collection does not contain value for com.common.pojo.User

其中是因为在mapper.xml文件中的resultMap ,没有设置正确,没有将sql的列名与pojo类的属性名保持一致

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
SpringBoot生成License的实现示例
Jun 16 Java/Android
深入理解以DEBUG方式线程的底层运行原理
Jun 21 Java/Android
SpringBoot整合JWT的入门指南
Jun 29 Java/Android
Spring实现内置监听器
Jul 09 Java/Android
gateway网关接口请求的校验方式
Jul 15 Java/Android
Java日常练习题,每天进步一点点(38)
Jul 26 Java/Android
Java练习之潜艇小游戏的实现
Mar 16 Java/Android
MybatisPlus EntityWrapper如何自定义SQL
Mar 22 Java/Android
详解Flutter网络请求Dio库的使用及封装
Apr 14 Java/Android
Java实现注册登录跳转
Jun 16 Java/Android
Java实现贪吃蛇游戏的示例代码
Sep 23 Java/Android
Java结构型设计模式之组合模式详解
Sep 23 Java/Android
Java基础之this关键字的使用
Jun 30 #Java/Android
Java图书管理系统,课程设计必用(源码+文档)
详解Java ES多节点任务的高效分发与收集实现
Jun 30 #Java/Android
mybatis中sql语句CDATA标签的用法说明
Jun 30 #Java/Android
总结Java对象被序列化的两种方法
Jun 30 #Java/Android
实体类或对象序列化时,忽略为空属性的操作
Jun 30 #Java/Android
Spring mvc是如何实现与数据库的前后端的连接操作的?
Jun 30 #Java/Android
You might like
Session的工作方式
2006/10/09 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
用PHP实现弹出消息提示框的两种方法
2013/12/17 PHP
jQuery 性能优化指南(3)
2009/05/21 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
2016/11/27 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
JS+CSS3实现的简易钟表效果示例
2019/04/13 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
Python中的super()方法使用简介
2015/08/14 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
Python post请求实现代码实例
2020/02/28 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
2014/09/15 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
世界上最大的二手相机店:KEN
2017/05/17 全球购物
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
this关键字的含义
2015/04/08 面试题
学前教育求职自荐信范文
2013/12/25 职场文书
2014年社区工作总结
2014/11/18 职场文书
重阳节慰问信
2015/02/15 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
党员心得体会范文2016
2016/01/23 职场文书
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang