ibatis组合Oracle的iterate insert批量插入


ibatis结合Oracle的iterate insert批量插入

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

	   }

相关阅读 >>

windows10 x64安装、配置oracle 11g过程记录(图文教程)

oracle数据回滚的全过程

使用idea对oracle数据库进行简单增删改查操作

详细整理oracle中常用函数

oracle冷备份恢复和oracle异机恢复使用方法

oracle中exists有什么用法

oracle数据库中多条件查询语句怎么写?

常用的oracle doc命令(收藏)

oracle select执行顺序的详解

oracle中获取会话信息的两个函数分享

更多相关阅读请进入《ibatis》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...