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 相关文章推荐
Spring Boot 启动、停止、重启、状态脚本
Jun 26 Java/Android
分析ZooKeeper分布式锁的实现
Jun 30 Java/Android
解决SpringBoot文件上传临时目录找不到的问题
Jul 01 Java/Android
Java 泛型详解(超详细的java泛型方法解析)
Jul 02 Java/Android
Java字符串逆序方法详情
Mar 21 Java/Android
Java Lambda表达式常用的函数式接口
Apr 07 Java/Android
Java 超详细讲解hashCode方法
Apr 07 Java/Android
教你在 Java 中实现 Dijkstra 最短路算法的方法
Apr 08 Java/Android
mybatis-plus模糊查询指定字段
Apr 28 Java/Android
解决Springboot PostMapping无法获取数据的问题
May 06 Java/Android
Java时间工具类Date的常用处理方法
May 25 Java/Android
解决spring.thymeleaf.cache=false不起作用的问题
Jun 10 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运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
2014/02/23 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
Python绘制3D图形
2018/05/03 Python
Python读写docx文件的方法
2018/05/08 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
对python 命令的-u参数详解
2018/12/03 Python
利用python修改json文件的value方法
2018/12/31 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
Kmeans均值聚类算法原理以及Python如何实现
2020/09/26 Python
美国批发零售网站:GearXS
2016/07/26 全球购物
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
学习党章思想汇报
2014/01/07 职场文书
三项教育活动实施方案
2014/03/30 职场文书
学校清明节活动总结
2014/07/04 职场文书
运动会闭幕式通讯稿
2015/07/18 职场文书
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript