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如何集成swagger组件
Jun 21 Java/Android
基于Java的MathML转图片的方法(示例代码)
Jun 23 Java/Android
springcloud之Feign超时问题的解决
Jun 24 Java/Android
dubbo集成zipkin获取Traceid的实现
Jul 26 Java/Android
浅谈Java父子类加载顺序
Aug 04 Java/Android
spring cloud 配置中心native配置方式
Sep 25 Java/Android
java代码实现空间切割
Jan 18 Java/Android
详解Flutter网络请求Dio库的使用及封装
Apr 14 Java/Android
Java死锁的排查
May 11 Java/Android
Spring 使用注解开发
May 20 Java/Android
Qt数据库应用之实现图片转pdf
Jun 01 Java/Android
java实现web实时消息推送的七种方案
Jul 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 操作调试的方法
2012/07/12 PHP
php使用百度天气接口示例
2014/04/22 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
JavaScript Prototype对象
2009/01/07 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
python使用RNN实现文本分类
2018/05/24 Python
python处理数据,存进hive表的方法
2018/07/04 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
python 发送json数据操作实例分析
2019/10/15 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
怎样写好创业计划书的内容
2014/02/06 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
艺术学院毕业生自荐信
2014/07/05 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL