MyBatis对日期类型数据的处理

       近日项目上遇到需求:查询某一时间段的数据(数据库中存在字段createTime,类型为date)。编写Mybatis的Mapper文件:

	
	

start_times,end_times两个属性都为Java.sql.date类型,数据库中字段createTime为Date类型,start_times/end_times都不为空,执行mapper对应方法,出现如下报错信息:

09:57:07 [http-nio-80-exec-10] ERROR c.c.a.c.exception.BDExceptionHandler - nested         
                         exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.IllegalArgumentException: invalid 
                         comparison: java.sql.Date and java.lang.String
### Cause: java.lang.IllegalArgumentException: invalid comparison: java.sql.Date and 
                         java.lang.String
...

显然,出现的问题是mapper文件中将某个Java.sql.date类型的数据进行了String类型转换。经过一番排查,终于找到原因:在if判断时使用了这么一句:“start_times != ‘’ ”和“end_times != '' ”,这两个判断使mapper试着去将start_times和end_times转换成String类型然后与“ ‘’ ”进行比较,然后报类型转换出错。更正代码:

	
	

执行通过。

最后,附上本人学习MyBatis时做的《Spring整合MyBatis学习编程代码》:https://download.csdn.net/download/txd2016_5_11/10596835

与君共勉。

你可能感兴趣的:(DB)