【无标题】

发布于:2025-05-13 ⋅ 阅读:(21) ⋅ 点赞:(0)

MyBatis-Plus 基础知识点总结

一、框架简介

基于 MyBatis 的增强工具,通过简化 CRUD 操作和提供便捷功能提升开发效率,核心特性包括:

  • 无侵入:只做增强,原有功能不受影响
  • 自动 CRUD:内置通用 Mapper 和 Service
  • 条件构造器:支持链式调用
  • 多种插件:分页、性能分析、乐观锁等
二、核心功能
  1. 通用 CRUD
// BaseMapper 接口示例
public interface UserMapper extends BaseMapper<User> {}

// 使用示例
userMapper.insert(user); 
User user = userMapper.selectById(1L);

  1. 条件构造器
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);

  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);

  1. **代码生成器
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 表达式保持类型安全,避免字段硬编码。