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

被折叠的 条评论
为什么被折叠?



