ibatis批量插入oracle数据库
<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代码
/** * 批量插入功能 */ @SuppressWarnings("unchecked") public void updateBatch(final List<ListKeyValue> list, String roleId) { SqlMapClient sqlMapClientTemplate = baseDao.getSqlMapClient(); try { sqlMapClientTemplate.startTransaction();//开启事务 /**事务todo start***/ /**先执行删除所有**/ Map<String,Object> deleteParamMap=new HashMap<>(); deleteParamMap.put("id",roleId.split(",")); sqlMapClientTemplate.delete("delete",deleteParamMap); sqlMapClientTemplate.insert("batchInsert",list); /**事务todo end***/ sqlMapClientTemplate.commitTransaction();//提交事务 } catch (SQLException e) { e.printStackTrace(); }finally { try { sqlMapClientTemplate.endTransaction();//事务完成 } catch (SQLException e) { try { sqlMapClientTemplate.getCurrentConnection().rollback(); //事务回滚 } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); } } }