<insert id="insertList" parameterType="java.util.List" useGeneratedKeys="false">
insert into "表" ("id", "date", "lunar_date", "week", "holiday_cn", "del")
select 序列名.nextval as id,A.* FROM (
<foreach collection="list" item="item" index="index" separator="union all">
select
#{item.date,jdbcType=DATE} as "date",#{item.lunarDate,jdbcType=DATE} as"lunar_date",
#{item.week,jdbcType=INTEGER} as "week",#{item.holidayCn,jdbcType=VARCHAR} as
"holiday_cn",0 as "del" from dual
</foreach> ) A
</insert>
需要注意的点
1、oracle是没有主键自增的功能的,需要新建一个序列
CREATE SEQUENCE "库"."序列名" MINVALUE 1 MAXVALUE 99999999999999999999999 INCREMENT BY 1 START WITH 1
可以使用SQL也可以使用Navicat等图形化工具创建
2、如果一直报错ORA-00923: 未找到要求的 FROM 关键字,可以给你的别名加个双引号试试
3、"item.字段名"和你实体类里的对应;"as 的字段名"和数据库里的对应。
4、序列名.nextval as id 这局话要写在foreach外面 ,详见开头XML