zoukankan      html  css  js  c++  java
  • mybatis使用oracle批量插入

    mysql的批量大家应该都知道,oracle和mysql还是有些不同的,如下:

    <insert id="inserts" parameterType="com.qianxingniwo.model.DlyOnlinePayOrder" useGeneratedKeys="false" >
        insert into YYSC_PLAT.DLY_ONLINE_PAY_ORDER (ORDER_ID, TRANSACTION_ID, ORDER_TYPE,
        WX_APPID, PAY_ORDER_ID, PAY_TIME,
        REFUND_MONEY, PAY_STATE, SOURCE,
        SUB_MCH_ID, PLATE_NUM, CARD_NO,
        PAY_TYPE, PAY_MONEY, IDEN,
        WX_MCH_ID, REAL_PAY_MONEY, ID,
        ORDER_DATE, REFUND_DATE, ATTACH,
        CREATE_TIME, UPDATE_TIME)
        <foreach collection="list" item="item" index="index" open="(" close=")" separator="union all">
        select
         #{item.orderId,jdbcType=NUMERIC}, #{item.transactionId,jdbcType=VARCHAR}, #{item.orderType,jdbcType=NUMERIC},
          #{item.wxAppid,jdbcType=VARCHAR}, #{item.payOrderId,jdbcType=VARCHAR}, #{item.payTime,jdbcType=DATE},
          #{item.refundMoney,jdbcType=DECIMAL}, #{item.payState,jdbcType=NUMERIC}, #{item.source,jdbcType=NUMERIC},
          #{item.subMchId,jdbcType=VARCHAR}, #{item.plateNum,jdbcType=VARCHAR}, #{item.cardNo,jdbcType=VARCHAR},
          #{item.payType,jdbcType=NUMERIC}, #{item.payMoney,jdbcType=DECIMAL}, #{item.iden,jdbcType=VARCHAR},
          #{item.wxMchId,jdbcType=VARCHAR}, #{item.realPayMoney,jdbcType=DECIMAL}, #{item.id,jdbcType=VARCHAR},
          #{item.orderDate,jdbcType=DATE}, #{item.refundDate,jdbcType=DATE}, #{item.attach,jdbcType=VARCHAR},
          #{item.createTime,jdbcType=DATE}, #{item.updateTime,jdbcType=DATE}
          from dual
        </foreach>
    
      </insert>

    运行通过。在Oracle的版本中,有几点需要注意的:

            1.SQL中没有VALUES;

            2.<foreach>标签中的(select ..... from dual);

            3.<foreach>标签中的separator的属性为"UNION ALL",将查询合并结果集。

            4.最重要的一点就是一定要在insert标签中加入useGeneratedKeys="false",如果不加则会报如下错误:

            ### Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束

    说明:insert的主键,我先调用了序列,然后复制给对象的属性了,所以在insert的时候直接用#{} 取字段就可以了

    原文链接:https://blog.csdn.net/qq_37630354/article/details/82792288

  • 相关阅读:
    AE的空间分析(转载)
    arcengine之版本管理
    执行 bower -v 时出现内部错误
    layui中获取全部提交的数据
    个推 简单的应用(安卓)
    在layui中,新的页面怎么获取另一个页面传过来的数据,并可以对数据进行判断,layui中的后台分页(table)。
    layui基本使用(动态获取数据,并把需要的数据传到新打开的窗口)
    layui的分页使用(前端分页)
    idea的热部署
    Lucene的步骤
  • 原文地址:https://www.cnblogs.com/longyao/p/11956107.html
Copyright © 2011-2022 走看看