oracle数据库中 Mybatis批量插入

本文详细介绍如何使用Mybatis在Oracle数据库中批量插入List数据。通过TaskModel类实例化并填充数据,利用DAO层的insertMore方法进行批量操作。XML配置提供两种方式:一种使用union all进行多次插入,另一种采用insert all进行单次多行插入。

oracle数据库中 Mybatis批量插入list数据

TaskModel:
public class TaskModel {
	private String pkid;
	private String empno;
	private String name;
	private String moduleNo;
	private String pageNo;
	private String finishFlag;
	//get,set方法省略
	}
实现层:
	public int insertMore() {
		int num=0;
		try{
			List<TaskModel> taskList = new ArrayList<TaskModel>();
			TaskModel item = null;
			for(int i=0;i<5;i++){
				item = new TaskModel();
				item.setPkid(Integer.toString(i));
				item.setEmpno("xxx");
				item.setName("xxx");
				item.setModuleNo("spc");
				item.setPageNo("spc_1");
				item.setFinishFlag("N");
				taskList.add(item);
			}
			num = dao.insertMore(taskList);
		}catch(Exception e){
			e.printStackTrace();
		}
		return num;
	}
dao层:
public int insertMore(List<TaskModel> taskList);
xml中的list數據的批量插入有兩種寫法。

第一種:

<insert id="insertMore" parameterType="java.util.List" useGeneratedKeys="false">
insert into qis_tasks t
  (t.relation_pkid,
   t.empno,
   t.empno_name,
   t.path_name,
   t.finish_state,
   t.module_no,
   t.page_no)
<foreach collection="list" item="li"  index= "index" separator="union all">
 (  select 
		#{li.pkid},
		#{li.empno},
		#{li.name},
		'ho',
		#{li.finishFlag},
		#{li.moduleNo},
		#{li.pageNo} from dual )
</foreach>
</insert>

第二種:該写法中數據表不能有別名(如果有會報錯,ORA-00928: 遺漏 SELECT 關鍵字)

<insert id="importFun" parameterType="java.util.List" useGeneratedKeys="false">
	insert all
	<foreach collection="list" item="li"  index="index"> 
	 into second_surface_base
	  (model_no,
	   cbtype,
	   process_no,
	   pro_type,
	   check_type,
	   big_item_name,
	   small_item_name,
	   small_item_english,
	   qis_factory,
	   qis_process,
	   creater) 
	 values 
	   (  
		#{li.model_no},
		#{li.cbtype_no},
		#{li.process_no},
		#{li.pro_type},
		#{li.check_type_no},
		#{li.big_item_name},
		#{li.small_item_name},
		#{li.small_item_english},
		#{li.qis_factory},
		#{li.qis_process},
		#{li.creater} )
	</foreach>
	select 1 from dual
</insert>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值