ibatis 批量插入

 

ibatis 批量插入

CreationTime--2018年7月2日10点21分

Author:Marydon

1.说明

  基于oracle的sql语句

2.主键id有默认值,比如:sys_guid()

  id有默认值的情况下,插入的时候,不再声明该字段,当插入一条数据的时候,oracle会自动生成id。

<insert id="insertCONSULT_SCHEDULE_batch" parameterClass="java.util.List">
    INSERT ALL
    <iterate conjunction=" ">
        INTO CONSULT_SCHEDULE
        (ORG_CODE,DEPENT_ID,DEPENT_NAME,DOCTOR_ID,DOCTOR_NAME,DOCTOR_PHONE,SCHEDULE_DATE,WEEK_TXT,WB_TYPE,CLOSE_TZ,REPLACE_TZ,REMARK)
        VALUES         
        <![CDATA[ 
            (#list[].ORG_CODE:VARCHAR#, 
            #list[].DEPENT_ID:VARCHAR#, 
            #list[].DEPENT_NAME:VARCHAR#, 
            #list[].DOCTOR_ID:VARCHAR#, 
            #list[].DOCTOR_NAME:VARCHAR#, 
            #list[].DOCTOR_PHONE:VARCHAR#, 
            TO_DATE(#list[].SCHEDULE_DATE#,'yyyy-MM-dd'),
            #list[].WEEK_TXT:VARCHAR#,         
            #list[].WB_TYPE:VARCHAR#, 
            #list[].CLOSE_TZ:VARCHAR#, 
            #list[].REPLACE_TZ:VARCHAR#, 
            #list[].REMARK:VARCHAR#) 
        ]]>
    </iterate>
    SELECT 1 FROM DUAL
</insert>

  字符串需要声明jdbc类型为VARCHAR,可以做数据类型转换。  

3.主键id使用序列

  id使用序列,需要先查出来序列的值作为id,手动插入到数据库。

<!-- 图像表 批量插入sql -->
<insert id="insertIMAGE_INFOBatch" parameterClass="java.util.List">
   INSERT INTO IMAGE_INFO
        (ID,FORM_LIST_ID,IMAGE_NAME)
        SELECT SEQ_IMAGE_INFO.NEXTVAL,FORM_LIST_ID,IMAGE_NAME FROM
        (
            <iterate conjunction="UNION ALL" prepend="">
                <![CDATA[ 
                    SELECT #list[].FORM_LIST_ID:DECIMAL# AS FORM_LIST_ID, 
                    #list[].IMAGE_NAME:VARCHAR# AS IMAGE_NAME FROM DUAL 
                ]]>
            </iterate>
         )
</insert>

  由于oracle的序列的数据类型是number,因此其对应的jdbc类型为DECIMAL。

4. 注意

  iBATIS使用这种批量插入操作,局限性在于:

  每次插入的总数据不能超过1000(插入字段数*插入行数<=1000),使用大集合拆分成小集合的方式来限制每次插入数量不超过1000即可。      

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值