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 即可。

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值