JdbcTemplate
Public int insertcontractach (list list) throws DataAccessException { final List temList = list; string sql = "insert into contract_ach_t " + " values (?, To_date (?, ' Yyyy-mm-dd '),?,?) "; try{ Int[] ii = this.getjdbctemplate (). BatchUpdate (Sql, new mybatchpreparedstatementsetter (temlist)); return ii.length; }catch (org.springframework.dao.dataaccessexception e) { e.printstacktrace (); throw new D ataaccessexception (E.getmessage ()); } } private class mybatchpreparedstatementsetter implements batchpreparedstatementsetter { final list temlist; public mybatchpreparedstatementsetter (list list) { temList = list; } public int getbatchsize () { return temlist.size (); } public void setvalues (Preparedstatement ps, int i) throws sqlexception { contractachvo contractachvo = (ContractAchVO) temList.get (i); ps.setstring (1, contractachvo.getcontractcode ()); ps.setstring (2, Contractachvo.getcreatedate ()); ps.setstring (3, contractachvo.getemployeeid ()); ps.setstring ( 4, contractachvo.getpercent ()); } }
Ideas for 2.JPA data,hibernate
public void batchsave (String sql,int batchsize,list<object[]> list) throws SQLException{ if (Collectionutils.isempty (list)) { Return; } sessionimplementor session =em.unwrap ( Sessionimplementor.class); connection connection = session.connection (); preparedstatement st = connection.preparestatement (SQL); for (Int i=0;i<list.size (); i++) { object[] params = list.get (i); if (Arrayutils.isempty (params)) { continue; } for (int j=1;j<=params.length;j++) { if (params[j-1] instanceof string) st.setstring (J,String.valueOf (params[ J-1]); else if (params[j-1] instanceof date) st.setdate (J, new java.sql.date ( (Date) params[j-1]); else if (params[j-1] instanceof BigDecimal) st.setbigdecimal (j, (BigDecimal) params[j-1]); else if (params[j-1] ==null) st.setnull (J, java.sql.types.varchar); else st.setstring (j, string.valueof (params[j-1)); } st.addbatch (); if (i > 0 && i%batchsize==0) { st.executebatch (); st.clearbatch (); } } st.executebatch (); }
Java BULK Insert