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 相关文章推荐
深入理解以DEBUG方式线程的底层运行原理
Jun 21 Java/Android
Java 语言中Object 类和System 类详解
Jul 07 Java/Android
java设计模式--原型模式详解
Jul 21 Java/Android
Sleuth+logback 设置traceid 及自定义信息方式
Jul 26 Java/Android
Java后台生成图片的完整步骤
Aug 04 Java/Android
Java 在线考试云平台的实现
Nov 23 Java/Android
SpringBoot整合阿里云视频点播的过程详解
Dec 06 Java/Android
JVM之方法返回地址详解
Feb 28 Java/Android
Java中API的使用方法详情
Apr 06 Java/Android
详解Flutter网络请求Dio库的使用及封装
Apr 14 Java/Android
Java后端 Dubbo retries 超时重试机制的解决方案
Apr 14 Java/Android
Java中Dijkstra(迪杰斯特拉)算法
May 20 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/04/09 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
用js重建星际争霸
2006/12/22 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
js原型链原理看图说明
2012/07/07 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
JavaScript编写的网页小游戏,很给力
2017/08/18 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
Python中多线程thread与threading的实现方法
2014/08/18 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
Loreto Gallo英国:欧洲领先的在线药房
2021/01/21 全球购物
小学生班会演讲稿
2014/01/09 职场文书
暑期研修感言
2014/02/17 职场文书
广告宣传策划方案
2014/05/21 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server