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: auto
table-prefix: t_
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 逻辑删除配置
global-config:
db-config:
logic-delete-field: deleted
logic-delete-value: 1
logic-not-delete-value: 0
五、特性扩展
- 乐观锁:通过版本号控制并发修改
- 自动填充:
@TableField(fill = FieldFill.INSERT)
- 逻辑删除:配置后自动过滤已删除数据
- SQL 注入器:支持自定义全局方法
提示:建议结合 Spring Boot 使用,通过 starter 依赖可快速集成。实际开发中注意合理使用 lambda 表达式保持类型安全,避免字段硬编码。