最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle + Mybatis實(shí)現(xiàn)批量插入、更新和刪除示例代碼

 更新時(shí)間:2018年01月14日 14:59:39   作者:dahaihh  
利用MyBatis動(dòng)態(tài)SQL的特性,我們可以做一些批量的操作,下面這篇文章主要給大家介紹了關(guān)于Oracle + Mybatis實(shí)現(xiàn)批量插入、更新和刪除的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。

前言

Mybatis是web工程開發(fā)中非常常用的數(shù)據(jù)持久化的框架,通過該框架,我們非常容易的進(jìn)行數(shù)據(jù)庫(kù)的增刪改查。數(shù)據(jù)庫(kù)連接進(jìn)行事務(wù)提交的時(shí)候,需要耗費(fèi)的資源比較多,如果需要插入更新的數(shù)據(jù)比較多,而且每次事務(wù)只提交一條數(shù)據(jù),會(huì)造成非常大的數(shù)據(jù)庫(kù)資源浪費(fèi),導(dǎo)致數(shù)據(jù)庫(kù)性能、系統(tǒng)性能大幅度下降。

關(guān)于mybatis的批量插入,網(wǎng)上的多數(shù)示例多半是關(guān)于MySQL數(shù)據(jù)庫(kù)的,關(guān)于Oracle數(shù)據(jù)庫(kù)的例子比較少。本文將給大家介紹關(guān)于Oracle+Mybatis批量插入、更新和刪除的相關(guān)內(nèi)容,下面話不多說了,來一起看看詳細(xì)的介紹吧。

1、插入

(1)第一種方式:利用<foreach>標(biāo)簽,將入?yún)⒌膌ist集合通過UNION ALL生成虛擬數(shù)據(jù),從而實(shí)現(xiàn)批量插入(驗(yàn)證過)

<insert id="insertBatchLaTContactRecord" parameterType="java.util.Map">
 <selectKey resultType="java.lang.Long" keyProperty="dto.id" order="BEFORE">
    select seq_LA_T_CONTACT_RECORD.nextval as id from dual
 </selectKey>
   insert into la_t_contact_record
   (   
     id        ,
     contract_id     ,
     contacter_add_name    ,
     contacter_add_type    ,
     contact_add_phone    ,
     contact_add_home_address  ,
     contact_add_work    ,
     contact_add_work_address  ,
     create_by      ,
     create_time     ,
     modify_by      ,
     modify_time     ,
     validate_state     ,
     sys_source      ,
     isquery        
   )
  select seq_LA_T_CONTACT_RECORD.NEXTVAL,A.* from( 
 <foreach collection="list" item="dto" index="index" separator="UNION ALL">
  select 
     #{dto.contractId,jdbcType=VARCHAR}
     ,#{dto.contacterAddName,jdbcType=VARCHAR}
     ,#{dto.contacterAddType,jdbcType=VARCHAR}
     ,#{dto.contactAddPhone,jdbcType=VARCHAR}
     ,#{dto.contactAddHomeAddress,jdbcType=VARCHAR}
     ,#{dto.contactAddWork,jdbcType=VARCHAR}
     ,#{dto.contactAddWorkAddress,jdbcType=VARCHAR}
     ,#{dto.createBy,jdbcType=DECIMAL}
     ,systimestamp
     ,#{dto.modifyBy,jdbcType=DECIMAL}
     ,#{dto.modifyTime,jdbcType=TIMESTAMP}
     ,'1'
     ,#{dto.sysSource,jdbcType=VARCHAR}
     ,#{dto.isquery,jdbcType=VARCHAR}
  from dual
 </foreach>) A
</insert>

   注意:入?yún)⒈仨毷莑ist集合,sql語句中沒有values;

(2)第二種方式:利用存儲(chǔ)過程實(shí)現(xiàn)批量插入(驗(yàn)證過)

<insert id="insertPlanRepaymentOtherfeeBatch" parameterType="java.util.List">
  begin
  <foreach collection="list" item="item" index="index">
   insert into lb_t_plan_repayment_otherfee
   (
   id        ,
   key       ,
   value       ,
   term       ,
   contract_id,
   PAY_ORDER,
   FEE_NAME,
   INTO_ID
   )
   values(SEQ_LB_T_PLAN_REPAY_OTHERFEE.nextval
   ,#{item.key,jdbcType=VARCHAR}
   ,#{item.value,jdbcType=VARCHAR}
   ,#{item.term,jdbcType=DECIMAL}
   ,#{item.contractId,jdbcType=VARCHAR}
   ,#{item.payOrder,jdbcType=DECIMAL}
   ,#{item.feeName,jdbcType=VARCHAR}
   ,#{item.intoId,jdbcType=VARCHAR}
   );
  </foreach>
  end;
 </insert>

  注意:入?yún)⑷匀皇莑ist集合,sql中有values,本質(zhì)是利用存儲(chǔ)過程實(shí)現(xiàn)批量插入;

(3)第三種方式:使用特殊的sql語句(網(wǎng)上搜到的,待驗(yàn)證) 

  參考博客:http://blog.csdn.net/w_y_t_/article/details/51416201

  下面這條sql語句可以實(shí)現(xiàn)一條語句批量插入!

INSERT ALL 
 INTO USERINFO(userid,username) VALUES('1001','Tom') 
 INTO USERINFO(userid,username) VALUES('1002','Black') 
 INTO USERINFO(userid,username) VALUES('1003','Jetty') 
 INTO USERINFO(userid,username) VALUES('1004','Cat') 
SELECT 1 FROM DUAL;
<insert id="batchInsertUser" parameterType="java.util.ArrayList"> 
INSERT ALL 
  <foreach collection="list" item="userList" index="index"> 
   INTO USERINFO(userid,username) VALUES(#{userList.userid},#{userList.username}) 
  </foreach> 
  SELECT 1 FROM DUAL 
</insert>

  注意:當(dāng)list的size大于500時(shí),會(huì)失?。?/p>

2、更新

 (1)第一種方式:同樣是利用存儲(chǔ)過程(網(wǎng)上搜索的,還是上面那個(gè)博客)

<update id="batchUpdateUser" parameterType="java.util.ArrayList"> 
 <foreach collection="list" item="userlist" index="index" open="begin" close=";end;" separator=";"> 
  UPDATE USERINFO T 
   <set> 
   T.USERID = #{userlist.userid,jdbcType=VARCHAR}, 
   T.USERNAME = #{userlist.username,jdbcType=VARCHAR}, 
   </set> 
   WHERE 
   T.USERID = #{userlist.userid,jdbcType=VARCHAR} 
 </foreach> 
</update>

(2)第二種方式:利用條件實(shí)現(xiàn)(已驗(yàn)證)

<update id="updateBatchByListStat" parameterType="java.util.Map">
 update la_t_advfinished t1
    set t1.list_stat='07',
    t1.modify_time     =systimestamp 
   where t1.id in(<foreach collection="ids" separator="," item="id">'${id}'</foreach>)
</update>

  注意:同樣可以使用or的條件實(shí)現(xiàn),類似于下面刪除的sql;

3、刪除

與更新第二種方式類似

<delete id="deleteAttractions" parameterType="java.util.List">
 delete from ATTRACTIONS
 <where>
 <foreach collection="list" index="index" item="item" open="(" separator="or" close=")">  
 id=#{item.id}
 </foreach>
 </where>
 </delete>

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Java并發(fā)之synchronized實(shí)現(xiàn)原理深入理解

    Java并發(fā)之synchronized實(shí)現(xiàn)原理深入理解

    這篇文章主要介紹了Java中synchronized實(shí)現(xiàn)原理詳解,涉及synchronized實(shí)現(xiàn)同步的基礎(chǔ),Java對(duì)象頭,Monitor,Mark Word,鎖優(yōu)化,自旋鎖等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • 淺析java volatitle 多線程問題

    淺析java volatitle 多線程問題

    Volatile修飾的成員變量在每次被線程訪問時(shí),都強(qiáng)迫從共享內(nèi)存中重讀該成員變量的值。而且,當(dāng)成員變量發(fā)生變化時(shí),強(qiáng)迫線程將變化值回寫到共享內(nèi)存
    2013-08-08
  • JVM垃圾回收算法的概念與分析

    JVM垃圾回收算法的概念與分析

    這篇文章主要給大家介紹了關(guān)于JVM垃圾回收算法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JVM具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • SpringBoot Mybatis 配置文件形式詳解

    SpringBoot Mybatis 配置文件形式詳解

    這篇文章主要介紹了SpringBoot Mybatis 配置文件形式詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • SpringBoot中多個(gè)實(shí)現(xiàn)的接口正確注入的六種方式

    SpringBoot中多個(gè)實(shí)現(xiàn)的接口正確注入的六種方式

    在SpringBoot中,正確注入多個(gè)接口實(shí)現(xiàn)包括使用@Autowired和@Qualifier、@Resource注解、構(gòu)造方法注入、@Primary注解、Java配置類以及將所有實(shí)現(xiàn)注入到List或Map中,感興趣的可以了解一下
    2024-10-10
  • java秒殺系統(tǒng)常見問題庫(kù)存超賣解決實(shí)例分析

    java秒殺系統(tǒng)常見問題庫(kù)存超賣解決實(shí)例分析

    這篇文章主要為大家介紹了java秒殺系統(tǒng)常見問題庫(kù)存超賣解決實(shí)例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 簡(jiǎn)單了解Spring循環(huán)依賴解決過程

    簡(jiǎn)單了解Spring循環(huán)依賴解決過程

    這篇文章主要介紹了簡(jiǎn)單了解Spring循環(huán)依賴解決過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 解決maven加載依賴時(shí)遇到的問題

    解決maven加載依賴時(shí)遇到的問題

    這篇文章主要介紹了解決maven加載依賴時(shí)遇到的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • SpringBoot項(xiàng)目中使用Mockito的示例代碼

    SpringBoot項(xiàng)目中使用Mockito的示例代碼

    這篇文章主要介紹了SpringBoot項(xiàng)目中使用Mockito的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • SpringBoot集成Mybatis實(shí)現(xiàn)對(duì)多數(shù)據(jù)源訪問原理

    SpringBoot集成Mybatis實(shí)現(xiàn)對(duì)多數(shù)據(jù)源訪問原理

    本文主要分析討論在SpringBoot應(yīng)用中我們?cè)撊绾闻渲肧qlSessionFactoryBean對(duì)象,進(jìn)而實(shí)現(xiàn)對(duì)多個(gè)不同的數(shù)據(jù)源的操縱,文章通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11

最新評(píng)論

灵台县| 隆安县| 大同市| 永清县| 淮滨县| 广灵县| 老河口市| 苍山县| 邛崃市| 石林| 广南县| 专栏| 平舆县| 台东县| 信丰县| 广昌县| 福鼎市| 涟水县| 吴江市| 夏邑县| 孝感市| 胶南市| 江都市| 富蕴县| 眉山市| 大冶市| 通海县| 盐山县| 察隅县| 郧西县| 神池县| 周至县| 吴桥县| 长汀县| 灵川县| 旬邑县| 甘泉县| 绿春县| 隆回县| 得荣县| 汉中市|