posts - 31,  comments - 31,  trackbacks - 0
          1、上回的心得中我強(qiáng)調(diào)了startBatch()的批處理的作用,但是其中的使用是個(gè)錯(cuò)誤用法,并沒(méi)有發(fā)揮出startBatch()的實(shí)力,對(duì)此給與觀眾的誤導(dǎo)我將在此表示到欠,并貼出正確的用法
          public class LocalDaoImpl extends SqlMapClientDaoSupport implements LocalDao {

              
          public void insertBuNaTaxBatLst(final PaginatedList list)
              
          {
                   getSqlMapClientTemplate().execute(
          new SqlMapClientCallback() {
                          
          public Object doInSqlMapClient(SqlMapExecutor executor)
                                  
          throws SQLException {
                              executor.startBatch();
                              
          // do some iBatis operations here
                              for(int i=0,count=list.size();i<count;i++)
                              
          {    
                                  executor.insert(
          "insertBuNaTaxBatLst", list.get(i));
                                  
          if (i % 50 == 0{
                                      System.out.println(
          "----" + i);//沒(méi)有意義只為測(cè)試
                                  }

                              }

                              executor.executeBatch();
                              
          return null;
                          }

                      }
          );
              }


          }
          這樣才能利用上startBatch()威力。
          2、注意ibatis的事物默認(rèn)情況下是自動(dòng)提交的,如果發(fā)現(xiàn)速度上有問(wèn)題可以留意一下,ibatis只有在顯示的聲明事物管理的情況下才自動(dòng)將事物管理改為不自動(dòng)方式。
          3、還是startBatch(),據(jù)我測(cè)試分析這個(gè)鬼東西只有在executeBatch(),才把所有的語(yǔ)句提交到數(shù)據(jù)庫(kù),在提交之前緩存中保留了大量的sql語(yǔ)句和數(shù)據(jù)對(duì)象,很有可能out of memony,對(duì)此要留意,可以在大量數(shù)據(jù)要做插入時(shí),分批用Batch,如:有40000條數(shù)據(jù)可將其分為4個(gè)Batch塊,讓后將這4個(gè)Batch用一個(gè)事物提交以保證數(shù)據(jù)完整性。
          注:最近在做數(shù)據(jù)抽取項(xiàng)目,愿與大家溝通心得
          posted on 2007-05-30 21:46 小平 閱讀(5965) 評(píng)論(6)  編輯  收藏


          FeedBack:
          # re: Spring+ibatis批量存儲(chǔ)心得 2
          2008-01-16 17:43 | 巖石
          非常的好,謝謝,受教了  回復(fù)  更多評(píng)論
            
          # re: Spring+ibatis批量存儲(chǔ)心得 2[未登錄](méi)
          2008-06-04 00:29 | peter
          學(xué)習(xí)  回復(fù)  更多評(píng)論
            
          # re: Spring+ibatis批量存儲(chǔ)心得 2
          2008-11-05 10:48 | 菜蟲
          請(qǐng)問(wèn)一下,對(duì)多張表同時(shí)進(jìn)行批量插入也可以用這種方法嗎?
          執(zhí)行插入多少條時(shí)去調(diào)用 executor.executeBatch();效率快。  回復(fù)  更多評(píng)論
            
          # re: Spring+ibatis批量存儲(chǔ)心得 2
          2009-06-05 10:24 | wnick123
          getSqlMapClientTemplate().execute(new SqlMapClientCallback(){
          public Object doInSqlMapClient(SqlMapExecutor sqlExe) throws SQLException
          {

          getSqlMapClient().startBatch();
          for(ChoiceItem ci:item.getChoiceItems()){
          ci.setFormId(item.getFormId());
          ci.setItemId(item.getItemId());
          getSqlMapClientTemplate().insert("choice_item.insert",ci);
          }
          getSqlMapClient().executeBatch();
          return null;
          }
          });
          /*
          getSqlMapClient().startBatch();
          for(ChoiceItem ci:item.getChoiceItems()){
          ci.setFormId(item.getFormId());
          ci.setItemId(item.getItemId());
          getSqlMapClientTemplate().insert("choice_item.insert",ci);
          }
          getSqlMapClient().executeBatch();
          */


          請(qǐng)問(wèn)這兩種那個(gè)效率高?
          為什么要使用回調(diào)的方法  回復(fù)  更多評(píng)論
            
          # re: Spring+ibatis批量存儲(chǔ)心得 2[未登錄](méi)
          2009-09-02 13:58 | 小斌
          # re: Spring+ibatis批量存儲(chǔ)心得 2[未登錄](méi)
          2009-10-22 09:49 | allen
          看看源碼你就知道為什么容易溢出了,你寫的方法也不是完全正確的,因?yàn)楸旧碓创a就存在bug,所以自己改源碼中預(yù)處理ps生成語(yǔ)句算法,再像你這么用就可以,歡迎討論qq279068158  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2008年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          framework

          j2me

          java

          linux

          web

          其他

          友情鏈接

          素材

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 思南县| 横峰县| 瑞昌市| 清河县| 枞阳县| 永吉县| 玉溪市| 建始县| 霸州市| 昆山市| 个旧市| 繁昌县| 瑞丽市| 石嘴山市| 灵宝市| 双流县| 库尔勒市| 宁波市| 滕州市| 井研县| 恩施市| 廊坊市| 那曲县| 丹寨县| 齐河县| 开化县| 古交市| 中卫市| 蕲春县| 辉县市| 蛟河市| 元阳县| 临城县| 平和县| 台东市| 沁水县| 东阳市| 濉溪县| 瓦房店市| 泰兴市| 衢州市|