zoukankan      html  css  js  c++  java
  • mybatis的批量添加的高效方法

    1.批量插入保存的方法:

    <insert id="addTrainRecordBatch" useGeneratedKeys="true" parameterType="java.util.List">  
            <selectKey resultType="long" keyProperty="id" order="AFTER">  
                SELECT  
                LAST_INSERT_ID()  
            </selectKey>  
            insert into regist_code (phone, code, createTime,status)  
            values  
            <foreach collection="list" item="item" index="index" separator="," >  
                (#{item.phone}, #{item.code},now(), 0)
            </foreach>  
        </insert>

    数据库表结构是:

    我的mode类是:

    package com.hyhl.model;
    
    import java.sql.Timestamp;
    
    /**
     * 注冊时候验证码
     * @author hyhl_wyf
     *
     */
    public class RegistCodeModel {
    	
    	    private int id;
    	    
    	    private  String phone;
    	    
    	    private String code;
    	    
    	    private int status;//状态0有效、1无效
    	    
    	    private Timestamp createTime;
    
    		public int getId() {
    			return id;
    		}
    
    		public void setId(int id) {
    			this.id = id;
    		}
    
    		public String getPhone() {
    			return phone;
    		}
    
    		public void setPhone(String phone) {
    			this.phone = phone;
    		}
    
    		public String getCode() {
    			return code;
    		}
    
    		public void setCode(String code) {
    			this.code = code;
    		}
    
    		public int getStatus() {
    			return status;
    		}
    
    		public void setStatus(int status) {
    			this.status = status;
    		}
    
    		public Timestamp getCreateTime() {
    			return createTime;
    		}
    
    		public void setCreateTime(Timestamp createTime) {
    			this.createTime = createTime;
    		}
    	    
    }
    

      

    测试的controller:

        @RequestMapping(value = "/getRegistPhoneCodeBatch")
        public @ResponseBody String getBatchRegistPhoneCode(int num, HttpServletRequest request) {
            List<RegistCodeModel> list=new ArrayList<RegistCodeModel>();
            String startTi=DateTimeUtil.getFormatDateTime( new java.util.Date());
            System.out.println("开始时间:"+startTi);
            for(int i=0;i<num;i++){
                RegistCodeModel model = new RegistCodeModel();
                model.setCode(RandomUtil.getRandString(6));
                model.setPhone("18037022633");
                list.add(model);
            }
            String startTi1=DateTimeUtil.getFormatDateTime( new java.util.Date());
            System.out.println(num+"条封装完List时间:"+startTi1);
            
            registCodeMapper.addTrainRecordBatch(list);
            String startTi2=DateTimeUtil.getFormatDateTime( new java.util.Date());
            System.out.println(num+"条插入结束时间:"+startTi2);
            return "true";
        }

     测试的结果是:

    -------------------10000条插入----------
    开始时间:2018-04-27 17:46:08
    10000条封装完List时间:2018-04-27 17:46:08
    10000条插入结束时间:2018-04-27 17:46:08


    ------------50000条插入------------------------
    开始时间:2018-04-27 17:46:33
    50000条封装完List时间:2018-04-27 17:46:33
    50000条插入结束时间:2018-04-27 17:46:34

    ------------------------------------

    可以看出,插入5条也只是用了1s的时间。

    比一条一条的插入快多了。

  • 相关阅读:
    JAVA Shallow heap & Retained heap
    JAVA-堆区,栈区,方法区。
    Android经典的设计模式
    Android 绘制view的小知识点
    Android View的滑动 动画
    Android开发aidl使用中linkToDeath和unlinkToDeath的使用
    Android任务栈的运行规律
    Android 通过httppost上传文本文件到服务器。
    Android中的Libraries以及Order and Export的使用。
    drawable微技巧以及layout的小知识
  • 原文地址:https://www.cnblogs.com/wyf-love-dch/p/8981148.html
Copyright © 2011-2022 走看看