文章目录
-
- 一、概述
- 二、项目结构
- 三、核心组件速览
- 四、批量插入
-
- 4.1 架构总览
- 4.2 执行流程
- 4.3 BatchMethod 与内置方法
- 4.4 参数转换器 ParameterConvert
- 4.5 使用示例
- 五、批量更新
-
- 5.1 基于 ID 的批量更新(updateById)
- 5.2 基于 Wrapper 的批量更新(update)
- 5.3 Wrapper 条件与 set 动态 SQL
- 5.4 事务处理与回滚机制
- 六、批量删除
-
- 6.1 架构概览
- 6.2 BaseMapper.deleteByIds
- 6.3 批量删除 vs 单条删除
- 七、批量保存或更新(saveOrUpdate)
-
- 7.1 核心机制
- 7.2 执行流程
- 7.3 Spring 集成
- 7.4 复杂业务场景
- 八、批量会话管理(BatchSqlSession)
-
- 8.1 设计理念
- 8.2 生命周期管理
- 8.3 依赖关系
- 九、性能考量
-
- 9.1 批次大小
- 9.2 执行器类型
- 9.3 flush/commit 策略
- 9.4 事务边界
- 9.5 批量 vs 单条
- 十、故障排查指南
-
- 问题一:查询不到刚写入的数据
- 问题二:flush 时机不当
- 问题三:事务未提交
- 问题四:参数不匹配
- 问题五:主键冲突
- 问题六:大数据量内存压力
- 十一、总结
一、概述
在日常后端开发中,批量操作是最常见的需求之一。无论是大量数据导入、数据同步,还是批量清理过期数据,高效的批量处理能力直接决定了系统的吞吐量和响应速度。
MyBatis-Plus 3.5 提供了一套完善的批量操作体系,底层基于 JDBC Batch Executor 实现,上层通过 BaseMapper 和 IService 提供开箱即用的批量 API。本文将围绕以下主题展开:
- 批量插入、批量更新、批量删除的实现原理与使用方式
- saveOrUpdate(保存或更新)的条件分流机制与主键冲突处理
- BatchSqlSession 的一级缓存可见性解决方案
- 事务管理、回滚机制与 Spring 集成
- 性能优化策略与故障排查
二、项目结构
MyBatis-Plus 的批量操作由\”核心层\”和\”扩展层\”协同完成:
- 核心层(mybatis-plus-core):提供通用的批量执行框架(MybatisBatch)、条件封装(UpdateWrapper/AbstractWrapper)、SQL 方法枚举(SqlMethod)等
- 扩展层(mybatis-plus-spring)






