栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用mybtis3.3.0时遇到的两个问题记录invalid comparison: java.util.Date and java.lang.String

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用mybtis3.3.0时遇到的两个问题记录invalid comparison: java.util.Date and java.lang.String

今天在工作中使用mybatis3.3.0时,遇到了两个诡异的问题,记录下来,方便以后查阅。(本地环境为mybatis3.3.0+postgresql)

一、invalid comparison: java.util.Date and java.lang.String

1.问题出现场景

post方式发送请求:

结果后台出现以下报错

2021-12-16 15:42:59.618 [http-nio-8343-exec-3] ERROR o.a.c.c.C.[.[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is 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] with root cause
java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String


2.问题出现原因

在网上查阅资料发现,mybatis3.3.0之后的版本,如果在mapper.xml有对date类型的字段进行“ !=’ ’ ”的判断,由于使用日期类型与字符串进行比较,就会出现该问题

看了一下我自己的查询实体类以及mapper文件,可不是嘛!


3.解决方式

  1. 将以上对日期类型进行的非空判断去掉
  2. 将查询实体类改为String类型

这里就不放截图了,说一下接下来遇到的另一个问题

二、根据int类型的标志字段查询数据没有效果

首先我的查询实体类里有个int类型的标志字段,0代表未发布1代表已发布

使用post请求以下接口

后台倒是好好的没报错并正确返回了数据,结果神奇的发现响应数据中竟然有sffb为1的数据!!!

仔仔细细检查了一遍xml中的sql和代码,发现没有任何问题,debug发现sffb=0也确确实实传到后台了,又将xml中的sql复制到navicat中,发现在navicat中只查询出了sffb=0的数据,啊咧,见鬼了!

于是乎,将sffb改为1再调一次接口,发现这下出来的都是sffb为1的正常数据,没有出乎意料的数据。

就在不知所措时,突然间发现控制台打印的sql并没有拼接它本应该拼接的sffb=0的条件,这就反应出mybatis并没有走xml中写的sffb判定条件分支,如下


看到这里感觉很眼熟,没错,跟上一个问题很相似,问题很可能还是出在" !=’ ’ "中,于是将该判断去掉,再次发送请求,发现查出来的只有sffb为0的结果了。

到这里就明白了,当int类型的字段为0时,通过mybaits的“ != ’ ’ ”判定结果为false,导致了最终的sql不拼接该部分,解决方案跟第一个问题的解决方案一致。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666772.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号