Oracle数据库批量插入的问题

之前用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里也需要指定每列的类型。

发布了61 篇原创文章 · 获赞 54 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/bibiboyx/article/details/102722348
今日推荐