(oracle)Mybatis 实现ID自增且批量新增问题(非java代码循环)


    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 
                         
        (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
        )
    
    ) t

(别名无所谓)
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自增必须在外层 否则会出现 此处不允许序号错误

你可能感兴趣的:(mybatis)