欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

ibatis 批量插入

发布时间:2025/5/22 编程问答 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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即可。      

 

 相关推荐:

  • java List集合
  • Oracle 插入表数据的几种方式

 

转载于:https://www.cnblogs.com/Marydon20170307/p/9252768.html

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的ibatis 批量插入的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。