• JDBC的批量添加


    数据库

    :

    批量添加代码:

    package com.hyhl.test;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    import org.omg.PortableInterceptor.INACTIVE;
    
    import com.hyhl.DrugFactory.vo.DrugMumberDetailVo;
    import com.hyhl.patient.util.DataSourceUtils;
    import com.hyhl.util.DateTimeUtil;
    
    public class JDBCBatchInsert {
        private String o_url = "jdbc:mysql://localhost:3306/hy_iwrs_test";
        private Connection conn = null;
        private String userName = "root";
        private String password = "root";
        
        /**
         * 使用PreparedStatement做插入
         * @param size
         */
        public void insertByBatchPrepareStat(List<DrugMumberDetailVo> list){
            String startTi = DateTimeUtil.getFormatDateTime(new java.util.Date());
            System.out.println("PreparedStatement做插入的开始时间"+startTi); 
            Connection conn = null;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection(o_url, userName, password);
                conn.setAutoCommit(false);
                String sql = "INSERT drug_number_detail_test(random,projectId,groupName,status) VALUES(?,?,?,?)";
                PreparedStatement prest = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
                for(DrugMumberDetailVo enter:list){
                  prest.setString(1, enter.getRandom());
                  prest.setInt(2, enter.getProject());
                  prest.setInt(3, enter.getGroup());
                  prest.setInt(4, enter.getStatus());
                  prest.addBatch();
                }
               prest.executeBatch();
               conn.commit();
               conn.close();
               String startTi1 = DateTimeUtil.getFormatDateTime(new java.util.Date());
               System.out.println("PreparedStatement做插入的结结时间"+startTi1); 
            } catch (SQLException ex) {
                Logger.getLogger(JDBCBatchInsert.class.getName()).log(Level.SEVERE, null, ex);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(JDBCBatchInsert.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        
    

     测试类:

    package com.hyhl.test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.persistence.criteria.CriteriaBuilder.In;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    import com.hyhl.DrugFactory.vo.DrugMumberDetailVo;
    
    public class JDBCBatchInsertTest {
      JDBCBatchInsert jdbcBatchInsert = null;
        public JDBCBatchInsertTest() {
            
        }
    
        @Before
        public void setUp() {
            jdbcBatchInsert = new JDBCBatchInsert();
        }
    
        @After
        public void tearDown() {
            jdbcBatchInsert = null;
        }
    
         @Test
         public void testPrepare() {
    
             
             List<DrugMumberDetailVo> list=new ArrayList<DrugMumberDetailVo>();
             for(int i=0;i<20000;i++){
                 DrugMumberDetailVo query=new DrugMumberDetailVo();
                 query.setGroup(0);
                 query.setProject(3);
                 query.setStatus(1);
                  int startNumber=0;
                    if(i+1<10){
                        startNumber=Integer.valueOf("2100000"+String.valueOf(i+1));
                    }else if (i+1<100){
                        startNumber=Integer.valueOf("210000"+String.valueOf(i+1));
                    }else if(i+1<1000){
                        startNumber=Integer.valueOf("21000"+String.valueOf(i+1));
                    }else if(i+1<10000){
                        startNumber=Integer.valueOf("2100"+String.valueOf(i+1));
                    }else if(i+1<100000){
                        startNumber=Integer.valueOf("210"+String.valueOf(i+1));
                    }else if(i+1<1000000){
                        startNumber=Integer.valueOf("21"+String.valueOf(i+1));
                    }
                    query.setRandom(String.valueOf(startNumber));
                 list.add(query);
                 
             }
             jdbcBatchInsert.insertByBatchPrepareStat(list);
         }
         
    
    }

    效率比for循环插入数据快跟多

  • 相关阅读:
    Centos常用命令(四、进程)
    搭建git服务器(Centos7)
    tortoiseGit使用
    docker常用命令
    配置docker阿里云加速器_CentOS7
    Centos常用命令(三、网络配置)
    Centos常用命令(二、任务调度和磁盘管理)
    spring的作用
    什么是spring框架
    get和post的区别
  • 原文地址:https://www.cnblogs.com/wyf-love-dch/p/8981281.html
Copyright © 2020-2023  润新知