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 小平 閱讀(5970) 評(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 | 菜蟲(chóng)
          請(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)航:
           
          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          framework

          j2me

          java

          linux

          web

          其他

          友情鏈接

          素材

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 丹巴县| 竹北市| 黑龙江省| 湘西| 鸡东县| 阳泉市| 清水县| 景德镇市| 香港 | 读书| 汝阳县| 昆山市| 德兴市| 临高县| 孟州市| 赤壁市| 通江县| 白玉县| 洛川县| 大英县| 荆州市| 荥阳市| 临汾市| 定襄县| 兴文县| 周口市| 京山县| 依兰县| 剑阁县| 涿州市| 高陵县| 方山县| 北流市| 丰台区| 仁寿县| 昂仁县| 长海县| 保靖县| 饶平县| 遵义市| 吉木乃县|