标签:== 行修改 shm cti ret close err jpa next
public static String genData(Connection dbConn,BASEVC BASEVC,String tableName,String RPDT,RPRJRTJ_PL JRTJPar,String sql){ JrtjComm JRTJComm=new JrtjComm(); String rtcd="0000"; String BKNO = CommonUtil.null2empty(BASEVC.getBKNO()); //String TSDT = CommonUtil.null2empty(BASEVC.getTSDT()); ResultSet rs = null; Statement stmt = null; PreparedStatement pstmt =null; long startTime = System.currentTimeMillis(); //获取开始时间 测试用,生产可注释 List<Map> dataList=new ArrayList <Map>(); try { logger.info(tableName+":"+sql); stmt=dbConn.createStatement(); rs = stmt.executeQuery(sql.toString()); long endTime = System.currentTimeMillis(); //获取结束时间 测试用,生产可注释 System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); //输出程序运行时间 测试用,生产可注释 long startTime1 = System.currentTimeMillis(); // 获取开始时间 测试用,生产可注释 // 将查询到的数据插入到表中 StringBuffer insert = new StringBuffer(); insert.append(" insert into ").append(tableName); insert.append(" (BKNO,CJRQ,ZHH,ZHMC,KHNBBM,KHHJRJGBM,KHHNBJGH,ZHBZ,ZHLX,KHRQ,XHRQ,ZHZT,SFKTWSYH,SFKTSJYH,ACST,STAT,SBTY) values "); insert.append( " (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); pstmt =dbConn.prepareStatement(insert.toString()); while (rs.next() ) { String ZHH = CommonUtil.null2empty(rs.getString("ZHH")); String ZHMC = CommonUtil.null2empty(rs.getString("ZHMC")); String KHNBBM = CommonUtil.null2empty(rs.getString("KHNBBM")); String KHHJRJGBM = CommonUtil.null2empty(rs.getString("KHHJRJGBM")); String KHHNBJGH = CommonUtil.null2empty(rs.getString("KHHNBJGH")); String ZHBZ = CommonUtil.null2empty(rs.getString("ZHBZ")); String ACTY = CommonUtil.null2empty(rs.getString("ACTY")); String ZHLX = CommonUtil.null2empty(rs.getString("ZHLX")); if("7".equals(ZHLX)){//个人结算户 ZHLX="0"+ACTY; }else if("1".equals(ZHLX)){//个人储蓄账户 ZHLX="04"; }else if("2".equals(ZHLX)){//基本存款账户 ZHLX="06"; }else if("3".equals(ZHLX)||"0".equals(ZHLX)||"6".equals(ZHLX)||"8".equals(ZHLX)||"9".equals(ZHLX)||"A".equals(ZHLX)){//一般存款账户 ZHLX="07"; }else if("D".equals(ZHLX) ||"5".equals(ZHLX)){//专用存款账户 ZHLX="08"; }else if("4".equals(ZHLX) || "B".equals(ZHLX) ||"C".equals(ZHLX)){//临时存款账户 ZHLX="09"; } String KHRQ = CommonUtil.null2empty(rs.getString("KHRQ")); String XHRQ = CommonUtil.null2empty(rs.getString("XHRQ")); String ACST = CommonUtil.null2empty(rs.getString("ACST")); //原账户状态 //String FEAM = CommonUtil.null2empty(rs.getString("FEAM")); //1正常、2休眠、3合同限制、4司法限制状态 String ZHZT="1"; if("1".equals(ACST.substring(0,1))) { ZHZT="3";//销户,等于合同限制 }else if("1".equals(ACST.substring(4,5))){ ZHZT="2";//休眠 } else if (ACST.length()==9 ){ if (ACST.endsWith("2") || ACST.endsWith("1")) { ZHZT="3";//合同限制 } } else { CA CA=new CA();//借用 rtcd=zhTai(dbConn,ZHH,RPDT,BKNO,CA); if(!"0000".equals(rtcd)){ return rtcd; } String AA=CA.getACCT(); if("1".equals(AA)){//金额冻结或状态冻结 ZHZT="4"; } } String ISNEW= CommonUtil.null2empty(rs.getString("ISNEW"));//**是不是修改的 **/ if(!ISNEW.equals("")){//如果空就是增加的,否则是新修改的,对修改的以前的信息上报类型进行修改 String ZHZTY= CommonUtil.null2empty(rs.getString("ZHZTY")); if(ZHZTY.equals(ZHZT)){ continue; } } String SFKTWSYH = CommonUtil.null2empty(rs.getString("SFKTWSYH")); String SFKTSJYH = CommonUtil.null2empty(rs.getString("SFKTSJYH")); // pstmt = dbConn.prepareStatement(insert.toString()); int fnum = 1; pstmt.setString(fnum++,BKNO); pstmt.setString(fnum++,RPDT); pstmt.setString(fnum++,ZHH); pstmt.setString(fnum++,ZHMC); pstmt.setString(fnum++,KHNBBM); pstmt.setString(fnum++,KHHJRJGBM); pstmt.setString(fnum++,KHHNBJGH); pstmt.setString(fnum++,ZHBZ); pstmt.setString(fnum++,ZHLX); pstmt.setString(fnum++,KHRQ); pstmt.setString(fnum++,XHRQ); pstmt.setString(fnum++,ZHZT); pstmt.setString(fnum++,SFKTWSYH); pstmt.setString(fnum++,SFKTSJYH); pstmt.setString(fnum++,ACST); pstmt.setString(fnum++, "0"); pstmt.setString(fnum++, "1"); // pstmt.executeUpdate(); // pstmt.close(); pstmt.addBatch(); if(!ISNEW.equals("")){//如果空就是增加的,否则是新修改的,对修改的以前的信息上报类型进行修改 StringBuffer updateSQL = new StringBuffer(); updateSQL.append(" UPDATE ").append(tableName).append(" SET SBTY=2 "); updateSQL.append(" WHERE BKNO=‘").append(BKNO).append("‘"); updateSQL.append(" and ZHH=‘").append(ZHH).append("‘"); updateSQL.append(" and CJRQ IN("); updateSQL.append(" SELECT * FROM ( SELECT MAX(CJRQ) FROM ").append(tableName); updateSQL.append(" WHERE BKNO=‘").append(BKNO).append("‘"); updateSQL.append(" and ZHH=‘").append(ZHH).append("‘"); updateSQL.append(" and STAT=1 ) A"); updateSQL.append(" )"); rtcd = JrtjComm.updateSBTY(dbConn, updateSQL.toString()); if(!rtcd.equals("0000")){ return rtcd; } } Map <String ,String>dataMap=new<String ,String> HashMap(); dataMap.put("BKNO",BKNO);/****/ dataMap.put("CJRQ",RPDT);/****/ dataMap.put("ZHH",ZHH); dataMap.put("ZHMC",ZHMC); dataMap.put("KHNBBM",KHNBBM); dataMap.put("KHHJRJGBM",KHHJRJGBM); dataMap.put("KHHNBJGH",KHHNBJGH); dataMap.put("ZHBZ",ZHBZ); dataMap.put("ZHLX",ZHLX); dataMap.put("KHRQ",KHRQ); dataMap.put("XHRQ",XHRQ); dataMap.put("ZHZT",ZHZT); dataMap.put("SFKTWSYH",SFKTWSYH); dataMap.put("SFKTSJYH",SFKTSJYH); dataList.add(dataMap); } pstmt.executeBatch(); long endTime1 = System.currentTimeMillis(); // 获取结束时间 测试用,生产可注释 System.out.println("插入JR_ZHXX表程序运行时间:" + (endTime1 - startTime1) + "ms"); // 输出程序运行时间 测试用,生产可注释 pstmt.close(); rtcd=JRTJComm.GenFile(dbConn, tableName, BASEVC, RPDT,JRTJPar,dataList); } catch (Exception e) { rtcd="出现异常,交易失败。"; logger.error("出现异常:",e); }finally{ try{ if (null != stmt) stmt.close(); if (null != rs) rs.close(); if (null != pstmt) pstmt.close(); }catch(Exception e){ } } return rtcd; }
测试比对不使用批量的时间,使用后是20秒以内,多数是17秒左右,没用批量是3分钟以上,数据是7000多条。
注意:rewriteBatchedStatements=true 这个加到你的数据库配置的URL后面。
本人菜鸡一个,欢迎大佬们来吐槽和指导。
标签:== 行修改 shm cti ret close err jpa next
原文地址:https://www.cnblogs.com/ccppjy/p/10687955.html