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 参数的日期字符串进行比较,这是一个可行的方法,前提是这两者的格式匹配。

相关推荐
一勺菠萝丶2 分钟前
Spring Boot + MyBatis/MyBatis Plus:XML中循环处理List参数的终极指南
xml·spring boot·mybatis
llwszx3 分钟前
Spring中DelayQueue深度解析:从原理到实战(附结构图解析)
java·后端·spring·delayqueue·延迟任务
述雾学java17 分钟前
Spring Cloud Feign 整合 Sentinel 实现服务降级与熔断保护
java·spring cloud·sentinel
保持学习ing18 分钟前
苍穹外卖day3--公共字段填充+新增菜品
java·阿里云·实战·springboot·前后端·外卖项目·阿里云文件存储
77qqqiqi36 分钟前
正则表达式
java·后端·正则表达式
厦门德仔1 小时前
【WPF】WPF(样式)
android·java·wpf
大春儿的试验田1 小时前
高并发收藏功能设计:Redis异步同步与定时补偿机制详解
java·数据库·redis·学习·缓存
Gappsong8741 小时前
【Linux学习】Linux安装并配置Redis
java·linux·运维·网络安全
hqxstudying1 小时前
Redis为什么是单线程
java·redis
RainbowSea1 小时前
NVM 切换 Node 版本工具的超详细安装说明
java·前端