2013-03-12 1481 views
0

我正嘗試使用mybatis批量執行(ExecutorType.BATCH)支持。我想在數據庫性能和可伸縮性原因中批量插入幾條記錄。我想覆蓋默認的Mybatis批量大小。我沒有找到任何方式來以編程方式配置批量大小。有沒有辦法來覆蓋默認的批量大小?以下是供您參考的代碼:如何在使用MyBatis ExecutorType.Batch批量插入操作時控制批量大小

public static void BatchUsingMyBatis() throws Exception 
    { 
     Contact contact = new Contact(); 
     contact.setname("someone"); 
     contact.setphone("somephone"); 
     contact.setemail("[email protected]"); 

     ClassPathXmlApplicationContext appContext = 
       new ClassPathXmlApplicationContext("BeanConfiguration.xml"); 

     SqlSessionFactoryBean factoryBean = appContext.getBean(org.mybatis.spring.SqlSessionFactoryBean.class); 
     SqlSessionFactory factory = factoryBean.getObject(); 
     SqlSession session = factory.openSession(ExecutorType.BATCH, false); 

     session.insert ("ins", contact); 
     session.insert ("ins", contact); 
     session.insert ("ins", contact); 
     session.insert ("ins", contact); 
     session.insert ("ins", contact); 

     session.commit(); 
    } 

謝謝。

回答

0

如果我正確理解您的需求,並且希望能夠配置會話,以便一次提交會生成多個批次插入。例如,如果可以設置一次發送最多的語句,則您提供的代碼將生成一個批量插入(一次三行)和另一個批量插入(一次兩行)。 我找不到這樣的功能信息,我相信沒有這樣的功能,但要實現這種行爲,你需要重寫BatchExecutor doUpdate方法和配置newExecutor方法,以便它知道新的Executor類。

+0

你的理解是正確的。 – 2013-03-19 11:14:12