Spring Data 与 MyBatis 持久化规范
# Spring Data 与 MyBatis 持久化规范
# 持久化选型
- 以读写简单、结构稳定的场景优先使用 Spring Data JPA 或 Spring Data 风格接口
- 以复杂查询、批量写入、性能敏感场景优先使用 MyBatis 或 MyBatis Plus
- 同一聚合内尽量保持单一持久化技术
# 仓储接口与实现
- 领域层定义仓储接口,例如
UserRepository - 基础设施层提供具体实现,例如
UserRepositoryImpl或 MyBatis Mapper - 在应用层及领域层依赖仓储接口而非具体实现
# 方法命名与职责
- 仓储方法命名体现查询意图与筛选条件
findById、findByUserIdAndStatuslistByUserId、existsByUserId
- 仓储只负责数据访问与对象映射,不承载业务决策逻辑
# MyBatis 映射规范
- Mapper 接口命名为
*Mapper,XML 文件与接口同名 - XML 中的 SQL 使用统一缩进与关键字大小写风格
- 避免在 XML 中写过于复杂的业务逻辑,复杂逻辑拆分为多个 SQL 与组合调用
# 查询与分页
- 分页查询统一使用分页插件或统一的分页参数对象
- 查询结果集大小可控,避免一次性查询超大数据集
# 性能与安全
- 对高频查询建立合适索引并在 Mapper 中明确使用条件
- 禁止拼接未校验的用户输入到 SQL 语句中
- 对批量更新与插入统一使用批处理接口