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 相关文章推荐
Java如何实现树的同构?
Jun 22 Java/Android
使用springMVC所需要的pom配置
Sep 15 Java/Android
JAVA API 实用类 String详解
Oct 05 Java/Android
详解JAVA的控制语句
Nov 11 Java/Android
Java 在线考试云平台的实现
Nov 23 Java/Android
Spring Security使用单点登录的权限功能
Apr 03 Java/Android
mapstruct的用法之qualifiedByName示例详解
Apr 06 Java/Android
零基础学java之带参数以及返回值的方法
Apr 10 Java/Android
Android开发手册Chip监听及ChipGroup监听
Jun 10 Java/Android
Android学习之BottomSheetDialog组件的使用
Jun 21 Java/Android
JDK8中String的intern()方法实例详细解读
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
php获取地址栏信息的代码
2008/10/08 PHP
关于初学PHP时的知识积累总结
2013/06/07 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
js中for in语句的用法讲解
2015/04/24 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python黑魔法之编码转换
2016/01/25 Python
python实现RSA加密(解密)算法
2016/02/17 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
使用K.function()调试keras操作
2020/06/17 Python
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
水果花束:Fruit Bouquets
2017/12/20 全球购物
药店促销活动策划方案
2014/08/24 职场文书
工作散漫检讨书
2014/09/16 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
2015年见习期个人工作总结
2015/05/28 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
如何用python反转图片,视频
2021/04/24 Python