用原始的jdbc批量插入資料
阿新 • • 發佈:2019-02-16
原始的jdbc批量插入資料的方法
@Service("importDao") @Transactional //使用jdbc進行批量操作 public class ImportExcelToOracleDaoImpl extends JdbcDaoSupport implements ImportExcelToOracleDao{ public void insertComplaintBatch(final List<ComplaintWorker> complaintWorkers) { //引數傳一個實體類的集合 String sql = "insert into TB_CMCC_COMPLAINT_WORKERS" + "(FILE_ID,ACCPT_PHONE,COMPLAINT_CONTENE,LOCATION,ACCPT_CHANNEL,ACCPT_TIME,CREATE_TIME,PROBLEM_TYPE,REPEAT_NUM,SPARE1,SPARE2,SPARE3,WHOLE_NETWORK_ID) " + "values (? , ? , ? , ? , ? , ? , sysdate , ? , ? , ? , ? , ? , ?) "; this.getJdbcTemplate().batchUpdate(sql, new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { i就是batchSize()集合的長度 ComplaintWorker cw = complaintWorkers.get(i); ps.setString(1, cw.getFileId()); ps.setString(2, cw.getAccptPhone()); ps.setString(3, cw.getComplaintContent()); ps.setString(4, cw.getLocation()); ps.setString(5, cw.getAccptChannel()); if (cw.getAccptTime() == null || "".equals(cw.getAccptTime())) { ps.setString(6, cw.getAccptTime()); } else { ps.setTimestamp(6, Timestamp.valueOf(cw.getAccptTime())); } ps.setString(7, cw.getProblemType()); ps.setInt(8, cw.getRepeatNumber()); ps.setInt(9, cw.getSpare1()); ps.setString(10, cw.getSpare2()); ps.setString(11, cw.getSpare3()); ps.setString(12, cw.getWholeNetworkId()); } public int getBatchSize() { return complaintWorkers.size(); } }); }