查询日期报错问题,invalid comparison: java.util.Date and java.lang.String
2018-11-16 14:20
771 查看
早上写了一个接口,按照时间段查询数据库结果的,然后各种错误,一开始写sql查询用的If test,Sql如图所示
[code]<select id="findTrail" resultType="Trail" parameterType="Dog"> select * from trail where 1=1 <if test="date11 != null and date11 != ''"> and time>=#{date11} </if> <if test="date22 != null and date22 != ''"> and time<=#{date22} </if> and iot=#{iot} and dwfs=#{dwfs} </select>
然后调用接口进行查询,发现没有传值的时候,date11和date22为空的时候可以查到数据,但是传入日期之后就查不到了,然后报错invalid comparison: java.util.Date and java.lang.String
[code]Exception in thread "main" 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 at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:122) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:113) at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:122) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:64) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53) at com.sun.proxy.$Proxy0.selectByCreateTime(Unknown Source) at mybatis.Test.buyerInfoTimeTest(Test.java:53) at mybatis.Test.main(Test.java:39) Caused by: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String at org.apache.ibatis.ognl.OgnlOps.compareWithConversion(OgnlOps.java:92) at org.apache.ibatis.ognl.OgnlOps.isEqual(OgnlOps.java:142) at org.apache.ibatis.ognl.OgnlOps.equal(OgnlOps.java:794) at org.apache.ibatis.ognl.ASTNotEq.getValueBody(ASTNotEq.java:53) at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258) at org.apache.ibatis.ognl.ASTAnd.getValueBody(ASTAnd.java:61) at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258) at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:494) at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:458) at org.apache.ibatis.scripting.xmltags.OgnlCache.getValue(OgnlCache.java:44) at org.apache.ibatis.scripting.xmltags.ExpressionEvaluator.evaluateBoolean(ExpressionEvaluator.java:32) at org.apache.ibatis.scripting.xmltags.IfSqlNode.apply(IfSqlNode.java:34) at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33) at org.apache.ibatis.scripting.xmltags.TrimSqlNode.apply(TrimSqlNode.java:55) at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33) at org.apache.ibatis.scripting.xmltags.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:41) at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:280) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:80) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:120) ... 7 more
原来这是mybatis中对于时间参数进行比较时的一个bug. 如果拿传入的时间类型参数与空字符串''进行对比判断则会引发异常. 所以在上面的代码中去该该判断, 只保留非空判断就正常了
然后改为
[code]<select id="findTrail" resultType="Trail" parameterType="Dog"> select * from trail where 1=1 <if test="date11 != null"> and time>=#{date11} </if> <if test="date22 != null"> and time<=#{date22} </if> and iot=#{iot} and dwfs=#{dwfs} </select>
只是把后面那个“”给去掉了而已,然后就可以访问正常了
相关文章推荐
- java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
- mybatis异常invalid comparison: java.util.Date and java.lang.String
- 【明哥报错簿】之 mybatis异常invalid comparison: java.util.Date and java.lang.String
- mybatis部分版本异常invalid comparison: java.util.Date and java.lang.String
- mybatis异常invalid comparison: java.util.Date and java.lang.String
- mybatis部分版本异常invalid comparison: java.util.Date and java.lang.String
- mybatis报Error updating database. Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
- mybatis异常invalid comparison: java.util.Date and java.lang.String
- mybatis异常invalid comparison: java.util.Date and java.lang.String
- mybatis异常invalid comparison: java.util.Date and java.lang.String
- mybatis异常invalid comparison: java.util.Date and java.lang.String
- mybatis异常invalid comparison: java.util.Date and java.lang.String(date和string无法比较)
- invalid comparison: java.util.Date and java.lang.String异常的原因
- mybatis异常invalid comparison: java.util.Date and java.lang.String
- 解决Mybatis PersistenceException,invalid comparison: java.util.Date and java.lang.String
- Spring3MVC 提交请求参数中的日期问题(java.lang.String cant not convert to java.util.Date)
- MyBatis sqlMapper.xml 传入String类型参数报错,invalid comparison: java.util.LinkedHashMap and java.lang.Strin
- 关于mybatis报invalid comparison: java.util.Arrays$ArrayList and java.lang.String异常
- Mybatis异常:Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lan
- invalid comparison: com.XXX.shop.util.PageUtil and java.lang.String