mysql批量插入数据

比较两种批量插入数据的方法,差距不是一般的大!!!
方法一:最笨重的方法!!一条一条的插入
sql语句如下:

 <insert id="insert" keyProperty="id" useGeneratedKeys="true">
        insert into somedemo.user(uername, sex, address, birthday, password, create_time, creator, update_time, updater, statu)
        values (#{uername}, #{sex}, #{address}, #{birthday}, #{password}, #{createTime}, #{creator}, #{updateTime}, #{updater}, #{statu})
    </insert>

测试代码:

 @Test
    public void inserUser(){
        User user = new User();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String baseName = "德鲁大叔";
        String baseAddress = "上海市";
        String basePass = "0";
        int size = 1000000;
        System.err.println("开始执行时间:"+df.format(new Date()));
        for (int i = 2; i < size; i++) {
            user.setUername(baseName+i);
            user.setAddress(baseAddress+i);
            user.setPassword(basePass+i);
            user.setStatu("0");
            user.setSex("1");
            userService.insert(user);
        }
        System.err.println("执行结束时间:"+df.format(new Date()));

    }

插入一百万数据用时48分钟!!!! 简直不可容忍啊。
在这里插入图片描述
方法二:mybatis的批量插入。

<insert id="insertUsers" parameterType="java.util.List">
        insert into user(uername, sex, address, password,statu) values
        <foreach collection="list" item="item" index="index" separator=",">
            (#{item.uername},#{item.sex},#{item.address},#{item.password},#{item.statu})
        </foreach>
    </insert>

测试代码:

 @Test
    public void mybatis批量插入(){
        List<User> users = new ArrayList<>();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String baseName = "mybatis";
        String baseAddress = "银川市";
        String basePass = "1";
        int size = 1000000;
        for (int i = 0; i < size; i++) {
            User user = new User();
            user.setUername(baseName+i);
            user.setAddress(baseAddress+i);
            user.setPassword(basePass+i);
            user.setStatu("0");
            user.setSex("1");
            users.add(user);
        }
        System.err.println("开始执行时间:"+df.format(new Date()));
        int res = userService.insertUsers(users);
        System.err.println("执行结束时间:"+df.format(new Date()));

    }

运行结果:
在这里插入图片描述
在这里插入图片描述
可见,用mybatis的批量插入,同样的插入一百万条数据,用时仅49秒!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值