批量插入 jdbc及hibernate方法
来源:互联网 发布:蒙泰软件 编辑:程序博客网 时间:2024/06/05 19:50
public void insertUndoRecordsIntoReport(final List<Object[]> recordsNeeded, final int monitoring_report_id) {final String sql =" insert into record (case_id, pass, level_id, info, project_id, module_id, monitoring_id, alternative, monitoring_report_id) " + " values ( ?, ?, ?, ?, ?, ?, ?, ?, ?) ";this.getHibernateTemplate().execute(new HibernateCallback() {public Object doInHibernate(Session session) throws HibernateException,SQLException {java.sql.Connection con = session.connection();java.sql.PreparedStatement stmt = con.prepareStatement(sql);for (Object[] recordNeeded:recordsNeeded) {stmt.setString(1,recordNeeded[1].toString()); stmt.setLong(2, 0); stmt.setLong(3, 4); stmt.setString(4, "用例未执行"); stmt.setString(5, recordNeeded[4].toString()); stmt.setString(6, recordNeeded[3].toString()); stmt.setString(7, recordNeeded[2].toString()); stmt.setString(8, recordNeeded[0].toString()); stmt.setLong(9, monitoring_report_id); stmt.addBatch();//将插入的任务添加到批处理中}stmt.executeBatch();//执行批量任务 stmt.close();session.flush(); session.close();return null; }});}
public void batchSaveCardDetail(List<TCardInfo> cardDetails) { return this.getHibernateTemplate().execute(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { for (int i = 0; i < cardDetails.size(); i++) { session.save(cardDetails.get(i)); if (i % 50 == 0) { session.flush(); session.clear(); } } return null; } }); }