【完美解决】Could not process result for mapping: ResultMapping{property=‘null‘, column=‘xxx‘, javaType=
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Could not process result for mapping: ResultMapping{property=‘null’, column=‘settle_time’, javaType=class java.util.Date, jdbcType=TIMESTAMP, nestedResultMapId=‘null’, nestedQueryId=‘null’, notNullColumns=[], columnPrefix=‘null’, flags=[CONSTRUCTOR], composites=[], resultSet=‘null’, foreignColumn=‘null’, lazy=false}
Caused by: org.apache.ibatis.executor.ExecutorException: Could not process result for mapping: ResultMapping{property=‘null’, column=‘settle_time’, javaType=class java.util.Date, jdbcType=TIMESTAMP, nestedResultMapId=‘null’, nestedQueryId=‘null’, notNullColumns=[], columnPrefix=‘null’, flags=[CONSTRUCTOR], composites=[], resultSet=‘null’, foreignColumn=‘null’, lazy=false}
以上是报错。
这个错误困扰了我一天, 网上应该没有专门针对这个报错的解释,因此做下记录,希望帮助后来者。
一. 背景
- 使用mybatis-generator代码自动生成工具, 生成了Mapper文件。
- 业务需要, 编写带有MAX函数的SQL语句,mybatis-generator并不支持生成SQL函数, 于是选择手写SQL
- 代码提交后频频报上述错误。
二. 原因
ResultMap映射错误。
这里先说一下Mybatis中,两种映射resultMap和resultType的区别
基本映射 :(resultType)使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。(数据库,实体,查询字段,这些全部都得一一对应)
<select id="selectByParam" parameterType="xxx.xxParam" resultType="xxx.xxDO">
高级映射 :(resultMap) 如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。(高级映射,字段名称可以不一致,通过映射来实现
<resultMap id="SumResultMap" type="xxx.xxDO"><result column="corp_id" property="corpId" javaType="java.lang.String" jdbcType="VARCHAR" />
</resultMap>
<select id="selectSumByExample" parameterType="xxx.xxExample" resultMap="SumResultMap">
一般来说,涉及到复杂语句的查询,需要用高级映射
mybatis-generator框架生成的resultMap是基于constructor属性的,constructor中的属性值,需要与POJO类唯一对应,不能多,也不能少,顺序也要相同。 但由于我使用了函数, 无法做到一一对应, 因此报错。
三. 解决办法
删除自动生成的constructor属性,使用result属性进行高级映射,将select选中的所有数据库字段与POJO类中的属性一一映射即可。 举例(通过result元素,将表中的dimension_name属性与POJO类中的dimensionName属性映射):
<result column="dimension_name" property="dimensionName" javaType="java.lang.Long" jdbcType="BIGINT" />
列一下最后的效果:
更改前:
<sql id="Sum_Column_List"><!-- sumColumnList -->MAX(dimension) dimension, MAX(dimension_name) dimension_name,MAX(category) category
</sql><resultMap id="BaseResultMap" type="xxx.xxDO"><constructor><idArg column="corp_id" javaType="java.lang.String" jdbcType="VARCHAR" /><idArg column="id" javaType="java.lang.Long" jdbcType="BIGINT" /><arg column="gmt_create" javaType="java.util.Date" jdbcType="TIMESTAMP" /><arg column="gmt_modified" javaType="java.util.Date" jdbcType="TIMESTAMP" /><arg column="dimension" javaType="java.lang.Long" jdbcType="BIGINT" /><arg column="dimension_name" javaType="java.lang.String" jdbcType="VARCHAR" /><arg column="category" javaType="java.lang.Long" jdbcType="BIGINT" /></constructor></resultMap><select id="selectSumGroupByExample" parameterType="com.fliggy.btrip.btripds.dao.domain.entity.tripadb.BtripOverviewAllDayDataDOExample" resultMap="SumResultMap">select<if test="distinct">distinct</if>'true' as QUERYID,<include refid="Sum_Column_List" />from 表名<if test="_parameter != null"><include refid="Example_Where_Clause" /></if><if test="groupByClause != null">group by ${groupByClause}</if><if test="orderByClause != null">order by ${orderByClause}</if>
</select>
更改后:
<sql id="Sum_Column_List"><!-- sumColumnList -->MAX(dimension) dimension, MAX(dimension_name) dimension_name,MAX(category) category
</sql><resultMap id="SumResultMap" type="com.fliggy.btrip.btripds.dao.domain.entity.tripadb.BtripOverviewAllDayDataDO"><result column="dimension" property="dimension" javaType="java.lang.Long" jdbcType="BIGINT" /><result column="dimension_name" property="dimensionName" javaType="java.lang.String" jdbcType="VARCHAR" /><result column="category" property="category" javaType="java.lang.Long" jdbcType="BIGINT" />
</resultMap><select id="selectSumGroupByExample" parameterType="com.fliggy.btrip.btripds.dao.domain.entity.tripadb.BtripOverviewAllDayDataDOExample" resultMap="SumResultMap">select<if test="distinct">distinct</if>'true' as QUERYID,<include refid="Sum_Column_List" />from 表名<if test="_parameter != null"><include refid="Example_Where_Clause" /></if><if test="groupByClause != null">group by ${groupByClause}</if><if test="orderByClause != null">order by ${orderByClause}</if>
</select>
有不懂可以留言!
【完美解决】Could not process result for mapping: ResultMapping{property=‘null‘, column=‘xxx‘, javaType=相关推荐
- 完美解决com.google.process.gapps已停止的错误问题
被com.google.process.gapps已停止的错误已经困扰一个月了,之前有坛友说删除浏览器可以解决. 但是会导致浏览器丢失的问题,经过多方查询终于找到比较完美的解决方案! 删除system ...
- mysql+concat函数问题_Mysql5.7中使用group concat函数数据被截断的问题完美解决方法...
前天在生产环境中遇到一个问题:使用 GROUP_CONCAT函数select出来的数据被截断了,最长长度不超过1024字节,开始还以为是navicat客户端自身对字段长度做了限制的问题.后面故意重新I ...
- html pdf支持css%写法吗,flying-saucer-pdf终于完美解决了(中文问题,换行问题,分页,页眉页脚,水印),html+css控制pdf样式...
集成freemarker+flying-saucer-pdf+itext,通过html模板生成PDF 折腾了很久,flying-saucer-pdf终于完美解决了(中文问题,换行问题,页眉页脚,水印) ...
- linux把u盘只读文件,完美解决linux下U盘文件只读的问题
完美解决linux下U盘文件只读的问题 1. 在终端运行如下命令 tail -f /var/log/syslog 2. 插入有只读文件系统故障的U盘 3. 观察命令行输出 输出局部如下: Jul 8 ...
- idea方法模板注释,完美解决param与return
完美解决@param与@return idea自带的/**注释是不能自定义作者,日期等信息的,如果需要可以采用以下这种方式 先自定义一个模板 ** $END$$params$$return$* @au ...
- 文本分类需要CNN? No!fastText完美解决你的需求(前篇)
文本分类需要CNN?No!fastText完美解决你的需求(前篇) fastText是个啥?简单一点说,就是一种可以得到和深度学习结果准确率相同,但是速度快出几个世纪的文本分类算法.这个算法类似与CB ...
- 一文帮你完美解决Json和Xml相互转换
目录 1.导入用到的jar包 2.xml格式转换为json格式 3.json格式转换为xml格式 我们经常会碰到Json和Xml相互转换,但是转换过程中经常出现各种奇葩问题,比如多节点了或少节点了,或 ...
- IE浏览器PDF展示,禁止下载,禁止打印,禁止另存,禁止复制完美解决
1,IE浏览器下使用PDFObject,需求是只能预览不能下载不能另存及打印和复制, <template><div id="ensur"></div& ...
- Python3爬取今日头条文章视频数据,完美解决as、cp、_signature的加密方法(2020-6-29版)
前言 在这里我就不再一一介绍每个步骤的具体操作了,因为在爬取老版今日头条数据的时候都已经讲的非常清楚了,所以在这里我只会在重点上讲述这个是这么实现的,如果想要看具体步骤请先去看我今日头条的文章内容,里 ...
最新文章
- MIT重新发明飞机:无需燃料,每秒万米喷射带你上天 | Nature封面
- 关于IT人职业道德的反思(转)
- 借助腾讯云CDN开启全站https及问题解决分享
- Linux 下 SVN 添加多个文件的方法
- 4.3 欠拟合与过拟合
- mysql5.7json查询_MySql5.7 json查询
- chown r mysql ._chown -R 用户名:组名 ./ 及 chown用法介绍
- Daily scrum 10.15
- 【Python】Python库之图形艺术
- java对【配置文件的读取】与【读配置文件时的路径问题】代码总结
- qt实现百度首页(仅界面,功能未实现)
- 国际项目投标那些事(六)投标文件怎么写才能惊呆业主 WTSolutions
- java实现打开新窗口_[Java教程]javascript 打开新窗口(window.open)
- react+UmiJS+Antd Pro简介
- vue中使用dragdrop
- 利用watir自动化测试并截图,截图后保存
- 手把带你学会红外避障循迹模块
- Learning Convolutional Neural Network for Graphs
- 2016MDCC移动开发者大会总结
- 游戏上云成标配 云服务器该怎么选?