**1. 采用Union all 拼接(主键不用序列)
1.1. Sql
// 括号内为要插入的字段, 使用Union all拼接的方式
// Union All 对结果集进行并集操作,包括重复行
insert into Ecc_tcm.prm_skill_assess (OID,PERSON_NAME,CARTNO)
select 1,'Jack',610528 from dual // 第一条
union all select 2,'Tom',123456 from dual // 第二条
union all select 3,'Lucy',123456 from dual; // 第三条
1.2. Mybatis文件
// ECC_TCM.prm_skill_assess_S.nextval用序列获得主键OID的方式,这种写法不支持,否则会报错
// SQLSyntaxErrorException: ORA-02287: 此处不允许序号
<insert id="insertSkillAssessList" parameterType="java.util.List">
insert into Ecc_tcm.prm_skill_assess t
(t.OID,
t.PERSON_NAME,
t.CARTNO,
)
<foreach collection="list" item="item" index="index" separator="union all" >
(SELECT
#{item.oid},
#{item.personName},
#{item.cartno},
from dual)
</foreach>
</insert>
**2. 采用Union all 拼接(主键采用用序列)
2.1. Sql
insert into Ecc_tcm.prm_skill_assess t
(
t.OID,
t.PERSON_NAME,
t.CARTNO
)
select ECC_TCM.prm_skill_assess_S.nextval,ba.*
from (
select 'lee','123' from dual
union all
select 'mei','456' from dual
) ba
2.2. Mybatis文件
//其中序列已经预先设置好了
<insert id="insertSkillAssessList" parameterType="java.util.List">
insert into Ecc_tcm.prm_skill_assess t
( t.OID,
t.PERSON_NAME,
t.CARTNO
)
select ECC_TCM.prm_skill_assess_S.nextval,
c.personName,
c.cartno
from
(<foreach collection="list" item="item" index="index" separator="union all" >
(select
#{item.personName} personName,
#{item.cartno} cartno
from dual)
</foreach>) c
</insert>
weixin_43374578
发布了5 篇原创文章 · 获赞 0 · 访问量 53
私信
关注