一、项目开发过程中遇到需要批量更新操作
mapper.java代码:
int updateExportData(List<ViewDetailDataDto> list);
Mapper.xml具体代码:
<update id="updateExportData" parameterType="java.util.List">
<foreach collection="list" item="item" separator=";">
update t_flywheel_export
<set>
flag =#{item.flag,jdbcType=VARCHAR},
no =#{item.no,jdbcType=VARCHAR},
userGuestCount=#{item.userGuestCount,jdbcType=INTEGER},
updateTime= #{item.updateTime,jdbcType=TIMESTAMP}
</set>
<where> lobbyCode = #{item.lobbyCode,jdbcType=VARCHAR} and exportDate= #{item.exportDate,jdbcType=DATE}</where>
</foreach>
</update>
批量更新操作update放在for循环内(这个更批量查询操作相反,查询时for循环放在select内)。
实际操作出现报错:
Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';
再三确认sql语句并没有写错。最后经过网上查找资料发现原来是Mybatis不能识别 “;”中,导致的错误。
解决***:在连接数据库的url中要加入?allowMultiQueries=true这段,而且要放在第一行***
以上是记录Mybtais批量更新遇到的坑!!!