Mybatis日期检索格式报错

问题复现

bash 复制代码
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
### Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String

问题分析

看起来问题是因为查询的时候尝试将数据库中的日期(start_time)与字符串(startTime)进行比较,导致了 "java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String" 错误。

html 复制代码
------------------原Mybatis语句
 <if test="startTime != null and startTime != '' ">and chat.start_time = #{startTime}</if>
html 复制代码
------------------修复后Mybatis语句
   <if test="startTime != null "> and DATE_FORMAT(chat.start_time, '%Y-%m-%d')=DATE_FORMAT( #{startTime}, '%Y-%m-%d')</if>

问题反思

遇到的问题是由于 MyBatis 试图将数据库中的日期(chat.start_time)与字符串(startTime)进行比较,从而导致了 "java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String" 错误。通过将 startTime 参数直接与数据库中的日期进行比较,并使用 DATE_FORMAT 函数将它们都格式化为相同的日期字符串,您成功地解决了此问题。这样的修改是有效的,因为它确保了在比较时两者都具有相同的格式,因此不再引发类型不匹配的异常。现在查询将 chat.start_timestartTime 参数的日期字符串进行比较,这是一个可行的方法,前提是这两者的格式匹配。

相关推荐
a努力。1 分钟前
京东Java面试被问:双亲委派模型被破坏的场景和原理
java·开发语言·后端·python·面试·linq
小毛驴8507 分钟前
Maven同时配置阿里云仓库和私有仓库
java·阿里云·maven
刘97538 分钟前
【第25天】25c#今日小结
java·开发语言·c#
不如打代码KK10 分钟前
Springboot如何解决跨域问题?
java·spring boot·后端
豆沙沙包?13 分钟前
2026年--Lc330-394. 字符串解码(栈)--java版
java·开发语言
蓝程序13 分钟前
Spring AI学习 程序接入大模型
java·人工智能·spring
nice_lcj52014 分钟前
数据结构之树与二叉树:重点梳理与拓展
java·数据结构
毕设源码-钟学长15 分钟前
【开题答辩全过程】以 助学贷款管理系统为例,包含答辩的问题和答案
java
亓才孓16 分钟前
任意大小的整数和任意精度的小数的API方法
java
CodeAmaz17 分钟前
MyBatis 分页插件实现原理(Interceptor 机制 + SQL 改写)
mybatis·分页插件