Mybatis实现批量添加、删除和修改操作

一、背景

在开发过程中,我们经常会对某个数据库表进行批量增删改的操作,sql批量的好处在于它可以避免程序和数据库建立多次连接,减少对数据库的访问次数,减轻数据的库压力,同时也会提高项目的性能。

二、批量添加
  1. XML方式
 //mapper层
 void addBatch(List<Emp> list);

 //XML层
 <!-- 批量添加 -->
	<insert id="addBatch" parameterType="list">
	  	insert into emp values
	  	<foreach collection="list" item="s" separator=",">
	  		(#{s.ename},#{s.sex},#{s.age},#{s.phone},#{s.jointime},#{s.deptid})
	  	</foreach>
	</insert>

  1. Mapper注解
	@Insert("<script>" +
			"INSERT INTO rc_fcrisk (id,create_date,tenant_id) "+
			"values " +
			"<foreach collection='fc' item='fcRisk' index='index' separator=','>" +
			"(#{fcRisk.id},#{fcRisk.createDate},#{fcRisk.tenantId})"+
			"</foreach>" +
			"</script>")
	void addBatch(@Param("fc") List<FcRisk> fc);

三、批量删除

  1. XML方式
    <delete id="batchDelete">
        delete from user where id in
        <foreach collection="list" item="ids" separator="," open="(" close=")">
            #{ids}
        </foreach>
    </delete>
  1. Mapper注解
	@Delete("<script>" 
			+"delete from rc_fcrisk where fc_id in "
			+ "<foreach collection='list' index='index' item='item' open='(' separator=',' close=')'>"
			+ " #{item} "
			+ "</foreach>"
			+ "</script>")
	void batchDelete(List<String> fc);

四、批量修改

 
 <!-- 批量修改 -->
	<update id="batchUpdate">
	    <foreach collection="list" item="user" separator=";" open="" close="">
	      update user
	      <set >
	        <trim suffixOverrides=",">
	        <if test="user.name != null" >
	          name= #{user.name},
	        </if>
	        <if test="user.age != null" >
	          age= #{user.age},
	        </if>
	        <if test="user.password!= null" >
	          password= #{user.password},
	        </if>
	        <if test="user.hobby}!= null" >
	          hobby= #{user.hobby}},
	        </if>
	        </trim>
	      </set>
	      where id= #{user.id}
	    </foreach>
	  </update>

注:
批量修改值得注意的地方是在配置文件中需要在数据库链接地址后面加上&allowMultiQueries=true 否则运行报错

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Monika、

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值