One minute
Week1043_tip
ARTS - Tip - 一次mybatis 与 java8 LocalDateTime的问题
问题描述
之前使用Java model ,mybatis 来操作mysql数据库, 对于mysql datetime类型一直使用的是 java.util.Date
, java8 提供了java.time.LocalDateTime 新的日期解决方案, 所以就引入了项目,然后在批量更新中用到,出现了无法更新的问题。
具体报错: SQL语法错误
环境与版本
mybatis: 3.5.1
mysql: 5.7
mysql driver: 8.0.26
mybatis xml写法是:
<update id="batchUpdate" parameterType="xxx">
<foreach collection="list" item="item" index="index" separator=";">
UPDATE t_table
SET
complete_date = #{item.completeDate}
</set>
WHERE id = #{item.id}
</foreach>
</update>
解决过程
首先是自认为 mybatis 解析 LocalDateTime出现了问题,所以搜索关键字是 " mybatis update localdatetime " , 在 Java 8 LocalDate mapping with mybatis 的回答说是要 增加 mybatis-typehandlers-jsr310 来处理 typeHandler 的问题, 但是在
LocalDate Cause TypeException · Issue #1549 · mybatis/mybatis-3 (github.com) 回答中说到,
mybatis 3.5.1已经解决了这个问题,不需要重新更新 。 所以怀疑是其他问题, 换关键字 搜索 mybatis batch update , 得到
需要修改jdbc连接,增加 allowMultiQueries=true 参数, 然后问题解决
解决方案
正常使用 LocalDateTime , jdbc连接增加 allowMultiQueries=true
Read other posts