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常用的加密算法
Jun 11 Java/Android
浅谈Java实现分布式事务的三种方案
Jun 11 Java/Android
Java方法重载和方法重写的区别到底在哪?
Jun 11 Java/Android
JVM入门之类加载与字节码技术(类加载与类的加载器)
Jun 15 Java/Android
Java实现多线程聊天室
Jun 26 Java/Android
Java实现二维数组和稀疏数组之间的转换
Jun 27 Java/Android
总结Java对象被序列化的两种方法
Jun 30 Java/Android
小程序与后端Java接口交互实现HelloWorld入门
Jul 09 Java/Android
gateway网关接口请求的校验方式
Jul 15 Java/Android
用Java实现简单计算器功能
Jul 21 Java/Android
使用springMVC所需要的pom配置
Sep 15 Java/Android
解析mybatis-plus中的resultMap简单使用
Nov 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
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
用javascript操作xml
2006/11/04 Javascript
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS
2013/11/18 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
vue+koa2搭建mock数据环境的详细教程
2020/05/18 Javascript
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
python安装pil库方法及代码
2019/06/25 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
Python Numpy,mask图像的生成详解
2020/02/19 Python
Python3开发环境搭建详细教程
2020/06/18 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
Java提供了哪些企业应用编程接口
2015/02/13 面试题
幼儿师范毕业生自荐信
2013/11/09 职场文书
《手指教学》反思
2014/02/14 职场文书
保险专业求职信
2014/07/07 职场文书
农村文化活动总结
2014/08/28 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
老人与海读书笔记
2015/06/26 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers