Spring Boot+Mybatis项目中实现多主键数据表的批量增加、批量删除操作

Spring Boot + Mybatis项目实现多主键数据表的批量增加、批量删除操作

​ 方法使用SQL语句中的foreach标签进行批量操作,在Spring Boot + Mybatis项目中只需要修改对应的Mapper.xml文件,将增加一条记录的SQL语句改为批量增加,将删除一条的记录的SQL语句改为批量删除。

SQL语句中foreach标签的使用介绍:

  <delete id="deleteBatch"> 
    delete from student where id in
    <foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
       #{id}
       </foreach>
  </delete>

说明: 调用deleteBatch这个方法传入的参数为数据表student中主键id号的list,然后通过foreach标签遍历这个list,进行批量删除操作。

eg: 获取到前端请求的参数list为:[{“id”: “1”},{“id”: “2”},{“id”: “3”}],那么会批量删除id号为1、2、3的记录。

补充: foreach标签中的属性使用

collection: collection属性的值有三个,分别为list、array、map,依次对应的参数类型为:List、数组、Map集合;

item: 表示在迭代过程中每一个字段的别名;

index: 表示在迭代过程中循环到的位置即下标索引;

open: 表示该语句以什么开始;

close: 表示该语句以什么结束;

separator: 表示迭代时每个元素之间以什么符合分隔;

批量增加

项目中对应的xml文件为:

  <!--批量增加操作-->
    <insert id="batchInsert">
        INSERT  INTO cluster_node_info
        (CLUSTER_ID,NODE_NAME,HOST_NAME,HOST_IP,PORT,IS_VALID)
        VALUES
        <foreach collection="list" item="item" index="index" separator=",">
            (#{item.cluster_id},#{item.node_name},#{item.host_name},#{item.host_ip},
            #{item.port},#{item.is_valid})
        </foreach>
    </insert>

说明: 获取参数为存放数据记录的list集合,通过foreach标签迭代遍历批量进行增加操作

批量删除

单主键数据表的批量删除

    <!--单主键批量删除-->
    <delete id="deleteList">
      delete from cluster_node_info
      where cluster_id in
    <foreach collection="list" item="item" open="(" separator="," close=")">
    	#{item.cluster_id}
	</foreach>
    </delete>

说明: 其中cluster_id是cluster_node_info表的唯一主键。

多主键数据表的批量删除

    <!--批量删除-->
    <delete id="deleteList">
    delete from cluster_node_info
    where
    <foreach collection="list" item="item" index="index" separator="or">
        (cluster_id = #{item.cluster_id}
        and host_ip = #{item.host_ip}
        and port = #{item.port})
    </foreach>
    </delete>

说明: 其中cluster_id、host_id、port为cluster_node_info表的主键,通过三个主键确定该条记录的唯一性,从而进行删除操作。

你可能感兴趣的:(计算机,互联网)