1. 程式人生 > >用原始的jdbc批量插入資料

用原始的jdbc批量插入資料

原始的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();  
	            }
			
	        });  
	    }