mybatis 分批次手动提交事务 Autowired private SqlSessionFactory sqlSessionFactory; public boolean saveOrUpdateStockBatch(ListSaleStockPO entityList, int batchSize, StockOperationTypeEnum operationTypeEnum) { // 此种提交方法会导致新增后主键无法回显暂时废弃 SqlSession session sqlSessionFactory.openSession(ExecutorType.BATCH, false); SaleStockDAO mapper session.getMapper(SaleStockDAO.class); try { if (entityList.size() batchSize) { executeStock(operationTypeEnum, mapper, entityList); } else { ListSaleStockPO list Lists.newArrayList(); for (int i 0; i entityList.size(); i) { list.add(entityList.get(i)); if (i 1 i % batchSize 0) { executeStock(operationTypeEnum, mapper, list); session.commit(); session.clearCache(); list.clear(); } } if (CollectionUtil.isNotEmpty(list)) { executeStock(operationTypeEnum, mapper, list); } } session.commit(); session.clearCache(); } catch (Exception e) { logger.error(CharConstant.ERROR, e); session.rollback(); ExceptionUtils.throwServiceException(ErrorCodeConstant.STOCK_UPDATE_FAIL); } finally { session.close(); } return true; private void executeStock(StockOperationTypeEnum operationTypeEnum, SaleStockDAO mapper, ListSaleStockPO list) { mapper.batchInsertIgnore(list); }
💡
读完这篇文章,你可以带走什么

本文来自编程新知一线开发与建站实战沉淀:讲清原理、给出可复现步骤、标注避坑要点。看完后可以直接在你的项目或网站中落地验证。

编程新知内容团队
一线开发 · 建站实施 · 持续更新
由资深前端工程师、后端架构师与建站实施人员共同维护,坚持"真实案例 + 完整步骤 + 避坑指南"的内容准则。如果你在落地中遇到问题,欢迎联系我们交流。

想把这套方案用到自己的项目上?

编程新知提供技术答疑与网站建设一站式服务,欢迎联系我们获取针对性建议。

联系工程师
📚

系统学习该技术

进入对应栏目,从基础到进阶完整学习,配套案例与避坑指南。

前往栏目 →
🏗️

需要落地实施

企业建站、SEO 优化、服务器部署等需求,交给工程师一步到位。

了解服务 →
💬

还有疑问

技术难题或方案咨询,联系编程新知获取一对一的专业建议。

联系我们 →