欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MyBatis(mysql) 批量更新的坑

程序员文章站 2024-01-14 21:16:04
...

今天在做项目时,遇到需要批量更新和插入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 即可。

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