java如何向mysql数据库中进行批量新增?

1.controller代码:

@ApiOperation(value = "批量新增",httpMethod = "GET")
    @GetMapping("/test10")
    private void test10() {
        //批量新增
        userService.batchInsert();
    }

2.service代码

//批量新增
    @Override
    public void batchInsert() {
        List<User> userList = new LinkedList<>();
        for(int i = 0;i < 100000; i++){
            User user = new User();
            String iStr = String.valueOf(i);
            user.setId(iStr);
            user.setAccount(iStr);
            user.setPwd(iStr);
            userList.add(user);
        }
        userMapper.delete(new QueryWrapper<>());
        this.batchInsert1(userList);
        userMapper.delete(new QueryWrapper<>());
        this.batchInsert2(userList);
    }

    //for循环新增(一般在数据量小,不需要考虑性能的情况下使用)
    private void batchInsert1(List<User> userList) {
        long start = System.currentTimeMillis();
        for(User user : userList){
            userMapper.insert(user);
        }
        long end = System.currentTimeMillis();
        long time = (end - start)/1000;
        System.out.println(time);//新增100000条数据,总耗时100秒
    }

    //使用mybatis框架中的foreach标签批量新增(一般在数据量大,需要考虑性能的情况下使用)
    private void batchInsert2(List<User> userList) {
        long start = System.currentTimeMillis();
        userMapper.batchInsert2(userList);
        long end = System.currentTimeMillis();
        long time = (end - start)/1000;
        System.out.println(time);//新增100000条数据,总耗时3秒
    }

3.dao代码

//使用mybatis框架中的foreach标签批量新增(一般在数据量大,需要考虑性能的情况下使用)
    void batchInsert2(List<User> userList);

4.XML代码

<!--使用mybatis框架中的foreach标签批量新增(一般在数据量大,需要考虑性能的情况下使用)-->
    <insert id="batchInsert2" parameterType="java.util.List">
        insert into user (id, account, pwd)
        values
        <foreach collection="userList" item="item" separator="," >
            (#{item.id,jdbcType=VARCHAR}, #{item.account,jdbcType=VARCHAR}, #{item.pwd,jdbcType=VARCHAR})
        </foreach>
    </insert>
经验分享 程序员 微信小程序 职场和发展