【问题标题】:How to control the batch-size when using MyBatis ExecutorType.Batch for batch insert operations使用 MyBatis ExecutorType.Batch 进行批量插入操作时如何控制批量大小
【发布时间】:2013-03-13 16:49:55
【问题描述】:

我正在尝试使用 mybatis 批量执行 (ExecutorType.BATCH) 支持。我想批量插入数据库性能和可伸缩性原因的几条记录。我想覆盖默认的 Mybatis 批量大小。我没有找到任何以编程方式配置批量大小的方法。有没有办法覆盖默认的批量大小?以下是代码供大家参考:

public static void BatchUsingMyBatis() throws Exception
    {
        Contact contact = new Contact();
        contact.setname("someone");
        contact.setphone("somephone");
        contact.setemail("someone@somedomain.com");

        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();
    }

谢谢。

【问题讨论】:

    标签: bulkinsert ibatis batch-processing mybatis batch-insert


    【解决方案1】:

    如果我正确理解您的需求,并且您希望能够配置会话,以便一次提交会生成多个批量插入。例如,如果可以设置一次发送最多的语句,您提供的代码将生成一个批量插入(一次三行)和另一批量插入(一次两行)。 我找不到有关此类功能的信息,并且我相信没有此类功能,但要实现此行为,您需要重写 BatchExecutor doUpdate 方法和 Configuration newExecutor 方法,以便它知道新的 Executor 类。

    【讨论】:

      猜你喜欢
      • 2013-09-05
      • 2021-05-31
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多