MyBatis-Plus 基础知识点总结
一、框架简介
基于 MyBatis 的增强工具,通过简化 CRUD 操作和提供便捷功能提升开发效率,核心特性包括:
- 无侵入:只做增强,原有功能不受影响
- 自动 CRUD:内置通用 Mapper 和 Service
- 条件构造器:支持链式调用
- 多种插件:分页、性能分析、乐观锁等
二、核心功能
- 通用 CRUD
// BaseMapper 接口示例
public interface UserMapper extends BaseMapper<User> {}// 使用示例
userMapper.insert(user);
User user = userMapper.selectById(1L);
- 条件构造器
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name", "张").between("age", 20, 30).orderByDesc("create_time");LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();
lambdaWrapper.eq(User::getStatus, 1);
- 分页插件
// 配置类添加
@Bean
public MybatisPlusInterceptor paginationInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor());return interceptor;
}// 使用示例
Page<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectPage(page, wrapper);
- **代码生成器
AutoGenerator generator = new AutoGenerator();
generator.setGlobalConfig(config).setDataSource(dataSourceConfig).setPackageInfo(packageConfig).execute();
三、常用注解
注解 | 说明 | 示例 |
---|---|---|
@TableName | 指定实体对应表名 | @TableName("sys_user") |
@TableId | 标识主键字段 | @TableId(type = IdType.AUTO) |
@TableField | 字段映射 | @TableField("user_name") |
@Version | 乐观锁版本字段 | @Version |
@EnumValue | 枚举类型与数据库值映射 | @EnumValue |
四、配置示例(application.yml)
mybatis-plus:global-config:db-config:id-type: autotable-prefix: t_configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl# 逻辑删除配置global-config:db-config:logic-delete-field: deletedlogic-delete-value: 1logic-not-delete-value: 0
五、特性扩展
- 乐观锁:通过版本号控制并发修改
- 自动填充:
@TableField(fill = FieldFill.INSERT)
- 逻辑删除:配置后自动过滤已删除数据
- SQL 注入器:支持自定义全局方法
提示:建议结合 Spring Boot 使用,通过 starter 依赖可快速集成。实际开发中注意合理使用 lambda 表达式保持类型安全,避免字段硬编码。