ssm整合中,Spring配置了批处理的sqlSession,但是实际执行仍然是普通的插入

在ssm整合中,Spring配置了批处理的sqlSession,但是实际执行仍然是普通的插入

插入的测试方法

 public void myTest5(){
        SqlSessionTemplate sessionTemplate = context.getBean("sessionTemplate", SqlSessionTemplate.class);
        EmployeeMapper mapper = sessionTemplate.getMapper(EmployeeMapper.class);
        System.out.println(sessionTemplate.getExecutorType());

        //性别随机数
        Random random=new Random();
        for (int i=0;i<=100000;i++){
            Employee employee=new Employee();
            int sexNum=random.nextInt();
            if (sexNum<0)
                sexNum=-1*sexNum;
            employee.setEmployeeAge((i+sexNum)%50);
            sexNum=sexNum%2;
            if (sexNum==0){
                employee.setEmployeeGender("男");
            }
            else
                employee.setEmployeeGender("女");
            employee.setEmployeeName("员工"+i);

            employee.setEmployeeEmail(i+"fadsfgf@qq.com");
            employee.setDepartmentId(i%3+1);
            //添加员工
            mapper.insertSelective(employee);
        }

    }

Spring中配置的

html

    <bean class="org.mybatis.spring.SqlSessionTemplate" id="sessionTemplate">
        <constructor-arg name="sqlSessionFactory" ref="sessionFactoryBean">constructor-arg>
        <constructor-arg name="executorType" value="BATCH">constructor-arg>
    bean>



日志输出为:

img

发现进行了多次编译,并没有批处理

我的解答思路和尝试过的方法
希望是批处理插入大量数据

应该是写法有问题,Mybatis 批处理BatchExecutor,可以参考:https://developer.51cto.com/article/707923.html
如有帮助,欢迎采纳!

EmployeeMapper 有批处理的方法么,我看你这代码是在循环调用插入方法

你的批量插入不是从java代码中进行处理的 ,而应该是在mapper.xml中使用foreach标签中实现。

你在循环里面插入之前随便输出点东西,你大概就能知道你用的这个批量是什么意思了

你这是循环去调用了,提交了很多次,你应该调用的是addlist之类的,将数据放入一个集合后,去调用sqlSession进行添加操作