ssm整合Mybatis之批量操作

  • applicationContext-dao.xml中声明一个可执行批量操作的sqlSession

通过构造函数注入方式:将SqlSessionTemplate交予Spring进行管理,方便后面service层中引用

注意:SqlSessionTemplate的executorType属性为BATCH


	
		
		
		
		
		
		
	
	
	
		
		
	
  • service中使用该sqlSession:插入10000条数据测试

这里需要注意@Transactional注解:让spring对该方法进行事务管理

spring如何进行事务管理,这里不做过多描述

@Service
public class DepartmentServiceImpl implements DepartmentService {
	private final static Logger logger = LoggerFactory.getLogger(DepartmentServiceImpl.class);
	//注入批量操作sqlSession
	@Autowired
	private SqlSessionTemplate sqlSessionTemplate;
	
	@Transactional
	public void batchSave() {
		//获取Mapper
		DepartmentMapper mapper = sqlSessionTemplate.getMapper(DepartmentMapper.class);
		long start = System.currentTimeMillis();
		//插入10000条数据测试
		for(int i=0; i<10000;i++) {
			Department department = new Department();
			department.setDeptName(UUID.randomUUID().toString().substring(0, 4));
			mapper.saveDepartment(department);
		}
		long end = System.currentTimeMillis();
		logger.info("批量保存用时:"+(end-start));
	}
}
  • 对应的mapper.xml



	
		insert into tbl_dept(id,dept_name) values(#{id},#{deptName})
	
  • 测试结果:

只对参数进行预编译,最后统一做保存处理

ssm整合Mybatis之批量操作_第1张图片

你可能感兴趣的:(ssm相关)