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 @ConfigurationProperties和@PropertySource的区别
Jun 11 Java/Android
springboot如何初始化执行sql语句
Jun 22 Java/Android
springboot项目以jar包运行的操作方法
Jun 30 Java/Android
Java基础-封装和继承
Jul 02 Java/Android
浅谈spring boot使用thymeleaf版本的问题
Aug 04 Java/Android
idea以任意顺序debug多线程程序的具体用法
Aug 30 Java/Android
使用springMVC所需要的pom配置
Sep 15 Java/Android
Java后端 Dubbo retries 超时重试机制的解决方案
Apr 14 Java/Android
Java对文件的读写操作方法
Apr 29 Java/Android
Java 多线程协作作业之信号同步
May 11 Java/Android
Java死锁的排查
May 11 Java/Android
Spring Cloud OAuth2实现自定义token返回格式
Jun 25 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面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
PHP抽象类 介绍
2012/06/13 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
php中执行系统命令的方法
2015/03/21 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
Javascript实现信息滚动效果
2017/05/18 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
python多进程共享变量
2016/04/06 Python
python3实现windows下同名进程监控
2018/06/21 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
python动态规划算法实例详解
2020/11/22 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
体育教师自我鉴定
2014/02/12 职场文书
生物工程专业求职信
2014/09/03 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
监护人证明
2015/06/19 职场文书
联村联户简报
2015/07/21 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
详解TypeScript的基础类型
2022/02/18 Javascript