SpringBoot配置批量新增,修改,删除

gitee地址:SpringBoot配置批量新增,修改,删除

1. 目录结构

在这里插入图片描述

2. maven依赖

    <parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.3.8.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
        <mysql.version>5.1.47</mysql.version>
        <druid.version>1.1.20</druid.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>io.easybest</groupId>
            <artifactId>spring-data-mybatis-boot-starter</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>
        <!--mysql依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <!--druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

3. 配置文件application

server:
  port: 8080

spring:
  application:
    name: batchOperation
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/batch_operation?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
    username: root
    password: root

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.qq.entity
  #用于mybatis在控制台打印sql日志
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

logging:
  level:
    com.qq.mapper: debug

4. entity

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author 黔程似景
 * @description TODO
 * @date 2021/12/9 21:53
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {

    private Integer id;

    private String username;

    private String sex;

    private String address;

    private String job;

    public User(String username, String sex, String address, String job) {
        this.username = username;
        this.sex = sex;
        this.address = address;
        this.job = job;
    }
}

5. service

import com.qq.entity.User;
import java.util.List;

public interface BatchUserService {

    /**
     * 批量添加
     * @param list 批量数据
     * @return 影响行数
     */
    int insertList(List<User> list);

    /**
     * 批量修改
     * @param list 批量数据
     * @return 影响行数
     */
    int updateList(List<User> list);

    /**
     * 批量删除
     * @param list 删除所需要删除的数据
     * @return 影响行数
     */
    int deleteList(List<User> list);

    /**
     * 获取批量数据
     * @return 获取数据集合
     */
    List<User> getList();
}
import com.qq.entity.User;
import com.qq.mapper.BatchUserMapper;
import com.qq.service.BatchUserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;

/**
 * @author 黔程似景
 * @description 批量操作数据
 * @date 2021/12/9 21:51
 **/
@Service
public class BatchUserServiceImpl implements BatchUserService {

    @Resource
    private BatchUserMapper batchUserMapper;

    /**
     * 批量添加
     *
     * @param list 批量数据
     * @return
     */
    @Override
    public int insertList(List<User> list) {
        return batchUserMapper.insertList(list);
    }

    /**
     * 批量修改
     *
     * @param list 批量数据
     * @return
     */
    @Override
    public int updateList(List<User> list) {
        return batchUserMapper.updateList(list);
    }

    /**
     * 批量删除
     *
     * @param list 删除所需要删除的数据
     * @return 影响行数
     */
    @Override
    public int deleteList(List<User> list) {
        return batchUserMapper.deleteList(list);
    }

    /**
     * 获取批量数据
     *
     * @return 获取数据集合
     */
    @Override
    public List<User> getList() {
        return batchUserMapper.getList();
    }
}

6. mapper

import com.qq.entity.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;

/**
 * 批量添加数据
 */
public interface BatchUserMapper {

    /**
     * 批量添加
     *
     * @param list 添加数据
     * @return 影响行数
     */
    int insertList(List<User> list);

    /**
     * 批量修改
     *
     * @param list 修改数据
     * @return 影响行数
     */
    int updateList(List<User> list);

    /**
     * 批量删除
     *
     * @param list 删除数据集合
     * @return 影响行数
     */
    int deleteList(List<User> list);

    /**
     * 获取批量数据
     *
     * @return 获取数据集合
     */
    @Select("select * from t_user")
    List<User> getList();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qq.mapper.BatchUserMapper">

    <!--批量新增-->
    <insert id="insertList" parameterType="java.util.List">
        insert into t_user(username , sex , address , job)
            values
        <foreach collection="list" item="item" index="index"  separator=",">
            <trim prefix=" (" suffix=")" suffixOverrides="," >
                #{item.username},
                #{item.sex},
                #{item.address},
                #{item.job}
            </trim>
        </foreach>
    </insert>

    <!--批量修改-->
    <update id="updateList" parameterType="java.util.List">
        update t_user
        <trim prefix="set" suffixOverrides=",">
            <trim prefix="username=case" suffix="end,">
                <foreach collection="list" item="item" index="index">
                    <if test="item.username!=null">
                        when id=#{item.id} then #{item.username}
                    </if>
                </foreach>
            </trim>
            <trim prefix="sex=case" suffix="end,">
                <foreach collection="list" item="item" index="index">
                    <if test="item.sex!=null">
                        when id=#{item.id} then #{item.sex}
                    </if>
                </foreach>
            </trim>

            <trim prefix="address=case" suffix="end," >
                <foreach collection="list" item="item" index="index">
                    <if test="item.address!=null">
                        when id=#{item.id} then #{item.address}
                    </if>
                </foreach>
            </trim>
            <trim prefix="job=case" suffix="end," >
                <foreach collection="list" item="item" index="index">
                    <if test="item.job!=null">
                        when id=#{item.id} then #{item.job}
                    </if>
                </foreach>
            </trim>
        </trim>
        where
        <foreach collection="list" separator="or" item="item" index="index" >
            id=#{item.id}
        </foreach>
    </update>

    <!--批量删除-->
    <delete id="deleteList">
        delete from t_user where id in
            <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
                #{item.id}
            </foreach>
    </delete>
</mapper>

7. 启动类

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.qq.mapper")
public class BatchOperationApplication {
    public static void main(String[] args) {
        SpringApplication.run(BatchOperationApplication.class, args);
    }
}

8. 测试类

import com.qq.entity.User;
import com.qq.service.BatchUserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * @author 黔程似景
 * @description TODO
 * @date 2021/12/9 22:31
 **/
@RunWith(SpringRunner.class)
@SpringBootTest
public class BatchOperation {

    @Resource
    private BatchUserService batchUserService;

    @Test
    public void batchInsertList() {
        List<User> userList = new ArrayList<>();
        userList.add(new User("范闲", "男", "儋州", "xxx"));
        userList.add(new User("范若若", "女", "京城范府", "跟班"));
        userList.add(new User("叶婉儿", "女", "宰相府", "xx"));
        userList.add(new User("司理理", "女", "阳春楼", "刺客"));

        int i = batchUserService.insertList(userList);
        System.out.println("影响了" + i + "行");
    }

    @Test
    public void batchUpdateList() {
        List<User> userList = new ArrayList<>();
        userList.add(new User(1, "法外狂徒", "男", "外卖小哥", "外卖小哥"));
        userList.add(new User(2, "张三", "男", "外卖小哥", "外卖小哥"));
        userList.add(new User(3, "里斯", "男", "外卖小哥", "外卖小哥"));
        userList.add(new User(4, "二货", "女", "外卖小哥", "外卖小哥"));

        int i = batchUserService.updateList(userList);
        System.out.println("影响了" + i + "行");
    }

    @Test
    public void batchDeleteList() {
        List<User> userList = batchUserService.getList();

        if (userList != null) {
            batchUserService.deleteList(userList);
        }
    }
}

9. 测试结果

添加:
在这里插入图片描述
在这里插入图片描述
修改:
在这里插入图片描述
在这里插入图片描述
删除:
在这里插入图片描述
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐