Mybatis实现批量更新sql语句(SSM实现批量更新sql语句)

java 专栏收录该内容
3 篇文章 0 订阅

第一步:数据库连接后面加上 allowMultiQueries=true
如:

		db.driverClassName=com.mysql.jdbc.Driver
		db.url=jdbc:mysql://119.23.70.208:3306/dqny?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
		db.username=****
		db.password=****

第二步: 如果你使用的是druid管理的数据库连接池的话那你得配置
multiStatementAllow = true;
具体配置如下:

	<!--dataSource -->
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
		init-method="init" destroy-method="close">
		<property name="driverClassName" value="${db.driverClassName}" />
		<property name="url" value="${db.url}" />
		<property name="username" value="${db.username}" />
		<property name="password" value="${db.password}" />
		<property name="initialSize" value="3" />
		<property name="minIdle" value="3" />
		<property name="maxActive" value="20" />
		<property name="maxWait" value="60000" />
		<property name="proxyFilters">
            <list>
                <ref bean="stat-filter"/>
                <ref bean="wall-filter"/>
            </list>
        </property>
		<property name="filters" value="stat,wall" />
	</bean>


	<!--druid -->
	<bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
		<property name="slowSqlMillis" value="3000" />
		<property name="logSlowSql" value="true" />
		<property name="mergeSql" value="true" />
	</bean>

	<bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter">
		<property name="dbType" value="mysql" />
		<property name="config" ref="wallConfig"/>
	</bean>
	
	<bean id="wallConfig" class="com.alibaba.druid.wall.WallConfig">
        <!-- 批量sql -->
        <property name="multiStatementAllow" value="true"/>
    </bean>

第三步:编写sql语句
例如:

   <!--  批量更新告警信息 -->
   <update id="bulkUpdate" parameterType="java.util.List" >
     <foreach collection="adviceList" item="advice" index="index" open="" close="" separator=";">
	    update ba_advice
	    <set >
	      <if test="advice.type != null" >
	        type = #{advice.type},
	      </if>
	      <if test="advice.discription != null" >
	        discription = #{advice.discription},
	      </if>
	      <if test="advice.level != null" >
	        level = #{advice.level},
	      </if>
	      <if test="advice.cteateTime != null" >
	        cteate_time = #{advice.cteateTime},
	      </if>
	      <if test="advice.status != null" >
	        `status` = #{advice.status},
	      </if>
	      <if test="advice.gatewayNo != null" >
	        gateway_no = #{advice.gatewayNo},
	      </if>
	      <if test="advice.groupId != null" >
	        group_id = #{advice.groupId},
	      </if>
	      <if test="advice.confirmationTime != null" >
	        confirmation_time = #{advice.confirmationTime},
	      </if>
	      <if test="advice.confirmationPeople != null" >
	        confirmation_people = #{advice.confirmationPeople},
	      </if>
	      <if test="advice.suggestion != null" >
	        suggestion = #{advice.suggestion}
	      </if>
	    </set>
	    where id = #{advice.id} 
	  </foreach>
  </update>

Dao层代码
int bulkUpdate(@Param("adviceList") List<BaAdvice> adviceList);

最后自己写个测试类就可以了;

  • 3
    点赞
  • 0
    评论
  • 14
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

快看,我会发光

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值