用途:面向 Java 后端开发,整理 MyBatis-Plus 增强 ORM 的常见编码模式与配置要点,帮助在查询、分页、并发控制与自动填充等场景写出更规范、类型安全的代码。
主要能力:
- 查询包装:推荐始终使用 LambdaQueryWrapper 与 Wrappers.lambdaQuery(),以方法引用替代字符串字段名;提供 lambdaQuery()/lambdaUpdate() 链式用法示例,避免 QueryWrapper 硬编码字段名。
- 分页:使用 IPage 配合 PaginationInnerInterceptor,Page 自动封装 total、pages、records;给出 PageQuery→PageDTO 的通用泛型封装示例。
- 乐观锁:@Version 配合 OptimisticLockerInnerInterceptor,更新时版本自动加一。
- 逻辑删除:@TableLogic,全局或单表配置,deleteById/deleteBatchIds 自动转为 UPDATE。
- 自动填充:@TableField(fill) 配合实现 MetaObjectHandler 的 Spring Bean,填充 createTime/updateTime。
- 防全表操作:BlockAttackInnerInterceptor 拦截无 where 的 UPDATE/DELETE。
- 提供 ActiveRecord(Entity extends Model) 与独立 Mapper+IService 两种模式的对比与最小配置示例(YAML 与 @Configuration)。
必要用法:需配置 MybatisPlusInterceptor 并添加各 InnerInterceptor;YAML 中可配置 id-type、logic-delete-field、map-underscore-to-camel-case 等。
限制:不覆盖 MyBatis XML/ResultMap/动态 SQL、代码生成器与数据权限;Lambda 依赖注解处理器;乐观锁须先查后更;自定义 SQL 需手写逻辑删除条件;分页插件与 PageHelper 可能冲突,建议二选一。不收集、存储或传输用户数据。