之前用mysql都是:insert into table(id,name) values('1','小明')这样的形式批量插入
对于mybatis的配置大概就是:
这样形式,oracle插入更新时好像必须得指定后面的jdbcType否则直接报错 !
最近用oracle发现会报这样错:
因为oracle批量插入居然不是mysql那样的写法。。。
insert all into A01_3(ID) values('11') into A01_3(ID) values('22') SELECT 1 FROM DUAL
后面那个select 1 from dual 还必须有。
所以myabtis应该这样配置:
扫描二维码关注公众号,回复:
8699923 查看本文章
<insert id="insertA013List" parameterType="com.gw.oydCloud.GHR.dao.model.A013">
insert all
<foreach collection="list" item="item" index="index" separator=" ">
into A01_3
(ID, A01_ID, A01_301,
A01_302, A01_303, A01_304,
A01_305, R_STATE, A_STATE, CREATETIME, OPERATORS) values
(#{item.id,jdbcType=VARCHAR},
#{item.a01Id,jdbcType=VARCHAR},
#{item.a01301,jdbcType=TIMESTAMP},
#{item.a01302,jdbcType=VARCHAR},
#{item.a01303,jdbcType=VARCHAR},
#{item.a01304,jdbcType=VARCHAR},
#{item.a01305,jdbcType=VARCHAR},
#{item.rState,jdbcType=DECIMAL},
#{item.aState,jdbcType=DECIMAL},
#{item.createtime,jdbcType=TIMESTAMP},
#{item.operators,jdbcType=VARCHAR})
</foreach>
SELECT 1 FROM DUAL
</insert>
ps:以后面试时再问oracle和mysql区别,可以说:oracle真的是比较麻烦。。。除了一些常见的函数不一样,安全性比较高,语句比较谨慎,默认隔离等级较高,比如pl/sql里默认不提交事务,Navicat链接需要提供oracle的dll校验文件,连批量插入和更新也不一样,和mysql比oracle需要更多地语句更加谨慎,myabtis里也需要指定每列的类型。