!!!Oracle的批量插入与mysql不一样!!!
mapper接口
/**
* CBD批量入库
* @param exdBizReportCBDList
* @return
*/
int batchInsert(@Param("exdBizReportCBDList")Set<ExdBizReportCBD> exdBizReportCBDList);
xml文件
<insert id="batchInsert">
insert into
exd_biz_report_cbd(ID,CBD_CODE,CBD_NAME,AREA_CODE,CBD_CITY_LEVEL,MEMO,DR,CREATE_USER,CREATE_TIME,UPDATE_USER,UPDATE_TIME)
<foreach collection="exdBizReportCBDList" item="exdBizReportCBD" separator="union all" open="(" close=")">
select
#{exdBizReportCBD.id,jdbcType=VARCHAR},
#{exdBizReportCBD.cbdCode,jdbcType=NULL},
#{exdBizReportCBD.cbdName,jdbcType=NULL},
#{exdBizReportCBD.areaCode,jdbcType=NULL},
#{exdBizReportCBD.cbdCityLevel,jdbcType=NULL},
#{exdBizReportCBD.memo,jdbcType=NULL},
#{exdBizReportCBD.dr},
#{exdBizReportCBD.createUser},
#{exdBizReportCBD.createTime},
#{exdBizReportCBD.updateUser,jdbcType=NULL},
#{exdBizReportCBD.updateTime}
from dual
</foreach>
</insert>
注意,插入Null提示无效字符 111
网上说有两种解决方案
- 在插入语句中的字段的表达式括号内加入jdbc类型
#{exdBizReportCBD.cbdCode,jdbcType=NULL}
-
在Mybatis全局配置文件中加入setting;
jdbcTypeForNull
<settings> <setting name="jdbcTypeForNull" value="NULL" /> </settings>
第二种方法,我想在application.yml中设置,没效果,暂时使用第一种方式