MyBatis(mysql) 批量更新的坑

今天在做项目时,遇到需要批量更新和插入mysql的数据库的情形,批量插入的SQL如下:

<insert id="insert" parameterType="java.util.List">
		INSERT INTO tbl_report (
					ID,
					create_time,
					state,
					update_time
					)
				VALUES
			<foreach collection="list" item="item" index="index" separator=",">
                   (
					#{item.id,jdbcType=VARCHAR},
					#{item.createTime,jdbcType=TIMESTAMP},
					#{item.state,jdbcType=INTEGER},
					#{item.updateTime,jdbcType=TIMESTAMP}
					)
			</foreach>
	</insert>


测试正常没有问题,但是到了批量更新时发生错误,检查后发现语法并没有问题,SQL如下:

<update id="upate" parameterType="java.util.List">  
        <foreach close="" collection="list" index="index" item="item" open="" separator=";">  
            update report
            <set>
            	state= 2
            </set>  
            where ID = #{item}
        </foreach>
	</update> 
但是,实际上即使Mybatis完美支持你的sql,你也得看看数据库是否支持。后来发现,原来mysql的批量更新是要我们主动去设置的, 就是在数据库的连接url上设置一下,加上&allowMultiQueries=true 即可。

加上之后再跑一下代码,问题就解决了




猜你喜欢

转载自blog.csdn.net/zt_star/article/details/78625923