插入的测试方法
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>
发现进行了多次编译,并没有批处理
应该是写法有问题,Mybatis 批处理BatchExecutor,可以参考:https://developer.51cto.com/article/707923.html
如有帮助,欢迎采纳!
EmployeeMapper 有批处理的方法么,我看你这代码是在循环调用插入方法
你的批量插入不是从java代码中进行处理的 ,而应该是在mapper.xml中使用foreach标签中实现。
你在循环里面插入之前随便输出点东西,你大概就能知道你用的这个批量是什么意思了
你这是循环去调用了,提交了很多次,你应该调用的是addlist之类的,将数据放入一个集合后,去调用sqlSession进行添加操作