报错背景:在mapper.xml中写update语句时在if标签中进行LocalDateTime的非空判断时使用判断不等于null且不等于 '' ,导致报错。
原因分析:mybatis 3.x.x的版本中对于时间参数进行非空比较时存在一个bug,具体是哪些版本会出错有待考究,这里我使用的是3.5.7。
<if test="updateTime != null and updateTime != ''">
update_time = #{updateTime},
</if>
BUG描述:如果拿传入的对象的时间类型参数与空字符串 '' 进行比对判断则会报IllegalArgumentException异常,所以在if代码块中去掉非空字符串的判断, 只保留非空判断(null)即可。
修改后代码:
<if test="updateTime != null">
update_time = #{updateTime},
</if>
如果你也遇到了这样的bug欢迎在评论区留下你的Mybatis版本号供大家参考,有其他问题也可以留在评论区一起讨论!