使用LocalDateTime
查询时,首先遇到问题:
invalid comparison: java.time.LocalDateTime and java.lang.String
整了半天终于找到问题所在:在mapper.xml
文件中,对该参数进行了LocalDateTime
和String
的对比,如下:
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
AND createTime BETWEEN #{startTime} AND #{endTime}
</if>
修改为以下格式解决问题:
<if test="startTime != null and endTime != null">
AND createTime BETWEEN #{startTime} AND #{endTime}
</if>
但是经过范围查询还是为空集,照理说不应该,观察后台日志,发现LocalDateTime
输出的是诸如"2020-11-20T13:34:00"
,但是mysql
里面输出的是"2020-11-20 13:34:00"
,没有T
,因此还是LocalDateTime
和String
的比较,这个问题困扰了好久,最后参考文章 LocalDate、LocalTime、LocalDateTime 和mysql5.7交互解决问题,原来是版本原因:
由于
如果想在实体Entity里面中使用Java8的日期LocalDate、LocalDateTime类型,
则必须要求数据库驱动的版本不能低于4.2
查看mysql-connector-java
版本,为5.1.*,低于5.1.37
,且则数据库的驱动版本低为4.0
,因此进行更新,
在maven
的pom.xml
依赖配置文件直接更改版本号为5.1.37
后Reload project
即可:
最终查询能够成功输出数据:
mysql
转换为DO
的数据也成功转换为LocalDateTime
了