mybatis操作oracle的批量导入与分页

mybatis操作oracle的批量导入跟操作MySQL批量导入略有不同,如果使用同MySQL一样的语句进行导入,会出现奇怪的报错.至于原因和解决方法,网上众说纷纭,在这里不再赘述,仅提供一个解决方法.

 

<!--表没有主键时,添加属性 useGeneratedKeys="false"-->
<insert id="batchImportBranch" parameterType="list">
   <foreach collection="list" item="item" index="index" separator=";" open="begin" close=";end;">
    INSERT INTO T_PGW_BANK_BRANCH
      (
           ID,
           PROC_CODE,
           BANK_CODE,
           BRANCH_ID,
           BRANCH_NAME,
           BRANCH_TYPE,
           AREA_CODE,
           RESERVE1,
           RESERVE2,
           STAT,
           CREATED_AT,
           CREATED_BY,
           UPDATED_AT,
           UPDATED_BY
      )
    VALUES
      (
      SEQ_PGW_BANK_BRANCH.NEXTVAL,
      #{item.procCode, jdbcType=VARCHAR},
      #{item.bankCode, jdbcType=VARCHAR},
      #{item.branchId, jdbcType=VARCHAR},
      #{item.branchName, jdbcType=VARCHAR},
      #{item.branchType, jdbcType=VARCHAR},
      #{item.areaCode, jdbcType=VARCHAR},
      #{item.reserve1, jdbcType=VARCHAR},
      #{item.reserve2, jdbcType=VARCHAR},
      #{item.stat, jdbcType=CHAR},
      SYSDATE,
      #{item.createdBy, jdbcType=VARCHAR},
      null,
      null
      )
   </foreach>
</insert>

分页:

SELECT
 xx,xx,xx
 FROM
 (
   SELECT
   xx,xx,xx,rownum r
   FROM T_TEST t1
   WHERE NOT EXISTS (
     SELECT 1
       FROM T_TEST_NOBUS WHERE xx=t1.xx AND xx=t1.xx
   ) AND <![CDATA[rownum <= #{endNum}]]>
 ) WHERE <![CDATA[r > #{startNum}]]>思路: startNum:开始的记录,endNum=startNum+pageSize(每页大小):结束的记录。
      根据条件查询出带rownum,并用endNum限制了记录数的子表,再查询需要的字段,并用startNum限定开始的记录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值