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

}