如何在使用MyBatis ExecutorType时控制批处理大小.Batch用于批量插入操作



我正在尝试使用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();
    }

谢谢。

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

相关内容

  • 没有找到相关文章

最新更新