<insert id="saveTemplateCategory" useGeneratedKeys="false" parameterType="list">
INSERT INTO SCM_ASSESS_TEMPLATE_CATEGORY(TEMPLATE_CATEGORY_ID,TEMPLATE_ID, CATEGORY_ID,
CATEGORY_TYPE, CATEGORY_NAME, MATERIAL_TYPE,
CATEGORY_CODE,ENABLED_FLAG,
CREATION_DATE, CREATED_BY, LAST_UPDATED_BY, LAST_UPDATED_DATE, TENANT_ID)
SELECT ASSESS_TEMPLATE_CATEGORY_S.nextval TEMPLATE_CATEGORY_ID,t.* FROM
<foreach collection="list" item="category" separator="UNION all">
(SELECT
#{category.templateId} TEMPLATE_ID,
#{category.categoryId} CATEGORY_ID,
#{category.categoryType} CATEGORY_TYPE,
#{category.categoryName} CATEGORY_NAME,
#{category.materialType,jdbcType=VARCHAR} MATERIAL_TYPE,
#{category.categoryCode} CATEGORY_CODE,
#{category.enabledFlag} ENABLED_FLAG,
#{category.creationDate} CREATION_DATE,
#{category.createdBy} CREATED_BY,
#{category.lastUpdatedBy,jdbcType=NUMERIC} LAST_UPDATED_BY,
#{category.lastUpdatedDate,jdbcType=DATE} LAST_UPDATED_DATE,
#{category.tenantId} TENANT_ID
FROM dual
)
</foreach>
) t
</insert>
(别名无所谓)
1.insert标签中://useGeneratedKeys=“false” 必须否则会报sql命令未正确结束;
2.标签中的(select … from dual);
3.当使用id自增时,insert 没有values ,标签中的separator的属性为"UNION ALL",将查询合并结果集。
4.若不需要自增,使用 insert into values ,标签中separator的属性为","
备注:
//ASSESS_TEMPLATE_CATEGORY_S.nextval 设置id自增 在外包一层循环为了 id自增
//id自增必须在外层 否则会出现 此处不允许序号错误