ibatis batch insert into oracle database
<insert id="batchInsert" parameterClass="java.util.List"> INSERT INTO SYS_ROLE_MENU( ROLE_ID, MENU_ID ) SELECT A.* FROM ( <iterate conjunction ="union all" > SELECT #list[].key# as ROLE_ID, #list[].value# as MENU_ID from dual </iterate > ) A </insert>
java code
/** * Bulk insert function */ @SuppressWarnings("unchecked") public void updateBatch(final List<ListKeyValue> list, String roleId) { SqlMapClient sqlMapClientTemplate = baseDao.getSqlMapClient(); try { sqlMapClientTemplate.startTransaction();//Start transaction /**Transaction todo start***/ /**First execute delete all**/ Map<String,Object> deleteParamMap=new HashMap<>(); deleteParamMap.put("id",roleId.split(",")); sqlMapClientTemplate.delete("delete",deleteParamMap); sqlMapClientTemplate.insert("batchInsert",list); /**Transaction todo end***/ sqlMapClientTemplate.commitTransaction();//Commit the transaction } catch (SQLException e) { e.printStackTrace (); }finally { try { sqlMapClientTemplate.endTransaction();//The transaction is completed } catch (SQLException e) { try { sqlMapClientTemplate.getCurrentConnection().rollback(); //Transaction rollback } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace (); } } }