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}

以上是报错。

这个错误困扰了我一天, 网上应该没有专门针对这个报错的解释,因此做下记录,希望帮助后来者。

一. 背景


  1. 使用mybatis-generator代码自动生成工具, 生成了Mapper文件。
  2. 业务需要, 编写带有MAX函数的SQL语句,mybatis-generator并不支持生成SQL函数, 于是选择手写SQL
  3. 代码提交后频频报上述错误。

二. 原因


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=相关推荐

  1. 完美解决com.google.process.gapps已停止的错误问题

    被com.google.process.gapps已停止的错误已经困扰一个月了,之前有坛友说删除浏览器可以解决. 但是会导致浏览器丢失的问题,经过多方查询终于找到比较完美的解决方案! 删除system ...

  2. mysql+concat函数问题_Mysql5.7中使用group concat函数数据被截断的问题完美解决方法...

    前天在生产环境中遇到一个问题:使用 GROUP_CONCAT函数select出来的数据被截断了,最长长度不超过1024字节,开始还以为是navicat客户端自身对字段长度做了限制的问题.后面故意重新I ...

  3. html pdf支持css%写法吗,flying-saucer-pdf终于完美解决了(中文问题,换行问题,分页,页眉页脚,水印),html+css控制pdf样式...

    集成freemarker+flying-saucer-pdf+itext,通过html模板生成PDF 折腾了很久,flying-saucer-pdf终于完美解决了(中文问题,换行问题,页眉页脚,水印) ...

  4. linux把u盘只读文件,完美解决linux下U盘文件只读的问题

    完美解决linux下U盘文件只读的问题 1. 在终端运行如下命令 tail -f /var/log/syslog 2. 插入有只读文件系统故障的U盘 3. 观察命令行输出 输出局部如下: Jul  8 ...

  5. idea方法模板注释,完美解决param与return

    完美解决@param与@return idea自带的/**注释是不能自定义作者,日期等信息的,如果需要可以采用以下这种方式 先自定义一个模板 ** $END$$params$$return$* @au ...

  6. 文本分类需要CNN? No!fastText完美解决你的需求(前篇)

    文本分类需要CNN?No!fastText完美解决你的需求(前篇) fastText是个啥?简单一点说,就是一种可以得到和深度学习结果准确率相同,但是速度快出几个世纪的文本分类算法.这个算法类似与CB ...

  7. 一文帮你完美解决Json和Xml相互转换

    目录 1.导入用到的jar包 2.xml格式转换为json格式 3.json格式转换为xml格式 我们经常会碰到Json和Xml相互转换,但是转换过程中经常出现各种奇葩问题,比如多节点了或少节点了,或 ...

  8. IE浏览器PDF展示,禁止下载,禁止打印,禁止另存,禁止复制完美解决

    1,IE浏览器下使用PDFObject,需求是只能预览不能下载不能另存及打印和复制, <template><div id="ensur"></div& ...

  9. Python3爬取今日头条文章视频数据,完美解决as、cp、_signature的加密方法(2020-6-29版)

    前言 在这里我就不再一一介绍每个步骤的具体操作了,因为在爬取老版今日头条数据的时候都已经讲的非常清楚了,所以在这里我只会在重点上讲述这个是这么实现的,如果想要看具体步骤请先去看我今日头条的文章内容,里 ...

最新文章

  1. MIT重新发明飞机:无需燃料,每秒万米喷射带你上天 | Nature封面
  2. 关于IT人职业道德的反思(转)
  3. 借助腾讯云CDN开启全站https及问题解决分享
  4. Linux 下 SVN 添加多个文件的方法
  5. 4.3 欠拟合与过拟合
  6. mysql5.7json查询_MySql5.7 json查询
  7. chown r mysql ._chown -R 用户名:组名 ./ 及 chown用法介绍
  8. Daily scrum 10.15
  9. 【Python】Python库之图形艺术
  10. java对【配置文件的读取】与【读配置文件时的路径问题】代码总结
  11. qt实现百度首页(仅界面,功能未实现)
  12. 国际项目投标那些事(六)投标文件怎么写才能惊呆业主 WTSolutions
  13. java实现打开新窗口_[Java教程]javascript 打开新窗口(window.open)
  14. react+UmiJS+Antd Pro简介
  15. vue中使用dragdrop
  16. 利用watir自动化测试并截图,截图后保存
  17. 手把带你学会红外避障循迹模块
  18. Learning Convolutional Neural Network for Graphs
  19. 2016MDCC移动开发者大会总结
  20. 游戏上云成标配 云服务器该怎么选?

热门文章

  1. C++ 析构函数设为虚函数的好处
  2. JAVA通信编程(四)——UDP通讯
  3. 特别策划:视频会议协作平台的机会与技术挑战
  4. LiveVideoStack音视频技术年度评奖启动
  5. Xilinx:让FFmpeg在FPGA上玩的爽
  6. Java基础之重写与重载深入解析
  7. TDSQL 全时态数据库系统--核心技术
  8. nginx监听事件流程
  9. ubuntu 16.04 apt源使用阿里云镜像
  10. QT开发的程序的发布