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 Optional<Foo>转换成List<Bar>的实例方法
Jun 20 Java/Android
Java 语言中Object 类和System 类详解
Jul 07 Java/Android
Java8中接口的新特性使用指南
Nov 01 Java/Android
使用jpa之动态插入与修改(重写save)
Nov 23 Java/Android
SpringDataJPA实体类关系映射配置方式
Dec 06 Java/Android
关于ObjectUtils.isEmpty() 和 null 的区别
Feb 28 Java/Android
剑指Offer之Java算法习题精讲二叉树专项训练
Mar 21 Java/Android
Android基于Fresco实现圆角和圆形图片
Apr 01 Java/Android
零基础学java之方法的定义与调用详解
Apr 10 Java/Android
SpringCloud项目如何解决log4j2漏洞
Apr 10 Java/Android
Java由浅入深通关抽象类与接口(下篇)
Apr 26 Java/Android
Java实现添加条码或二维码到Word文档
Jun 01 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
人大复印资料处理程序_输入篇
2006/10/09 PHP
PHP 函数执行效率的小比较
2010/10/17 PHP
php strrpos()与strripos()函数
2013/08/31 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
微信小程序入门教程
2016/11/18 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
Python异常处理操作实例详解
2018/05/10 Python
Python面向对象编程基础实例分析
2020/01/17 Python
Python阶乘求和的代码详解
2020/02/14 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
Django admin组件的使用
2020/10/24 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
自荐信格式范文
2013/10/07 职场文书
写给女生的道歉信
2014/01/14 职场文书
《赵州桥》教学反思
2014/02/17 职场文书
经典英文广告词
2014/03/18 职场文书
股权转让意向书
2014/04/01 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
2016国庆促销广告语
2016/01/28 职场文书
初中化学教学反思
2016/02/22 职场文书