MyBatis-Plus 是 MyBatis 的增强工具,旨在简化 MyBatis 的开发,提高开发效率。以下是 MyBatis-Plus 的一些主要功能点及其解释:
1. CRUD 接口
MyBatis-Plus 提供了丰富的 CRUD 接口,简化了常见的数据库操作。
- ** - BaseMapper**:提供了基本的 CRUD 方法,如- insert、- deleteById、- updateById、- selectById等。
- ** - IService**:提供了更高级的 CRUD 服务接口,包含批量操作和分页查询等功能。
2. 自动填充
自动填充功能可以在插入和更新数据时自动填充某些字段,如创建时间、更新时间等。
- ** - @TableField**:用于标注需要自动填充的字段。
- ** - MetaObjectHandler**:自定义填充逻辑。
3. 乐观锁
乐观锁机制用于解决并发更新问题,防止数据被多次修改。
- ** - @Version**:用于标注乐观锁版本字段。
- ** - OptimisticLockerInterceptor**:乐观锁拦截器,自动处理版本字段的更新。
4. 逻辑删除
逻辑删除功能可以在删除数据时不真正删除,而是标记为已删除。
- ** - @TableLogic**:用于标注逻辑删除字段。
- ** - LogicDeleteInterceptor**:逻辑删除拦截器,自动处理逻辑删除字段。
5. 分页插件
分页插件可以简化分页查询的实现。
- ** - Page**:分页查询参数和结果封装类。
- ** - PaginationInterceptor**:分页拦截器,自动处理分页查询。
6. 条件构造器
条件构造器可以动态构造查询条件,简化复杂查询的实现。
- ** - QueryWrapper**:用于构造查询条件。
- ** - UpdateWrapper**:用于构造更新条件。
- ** - LambdaQueryWrapper**:用于构造Lambda表达式的查询条件。
- ** - LambdaUpdateWrapper**:用于构造Lambda表达式的更新条件。
7. 自动生成代码
MyBatis-Plus 提供了代码生成器,可以根据数据库表结构自动生成实体类、Mapper接口、Service接口和Controller类等。
- ** - AutoGenerator**:代码生成器类。
- ** - GlobalConfig**:全局配置。
- ** - DataSourceConfig**:数据源配置。
- ** - PackageConfig**:包配置。
- ** - StrategyConfig**:策略配置。
8. 多租户
多租户功能可以在同一个数据库中隔离不同租户的数据。
- ** - TenantLineHandler**:自定义租户处理逻辑。
- ** - TenantSqlParser**:租户SQL解析器,自动处理租户字段。
9. SQL 性能分析
SQL 性能分析插件可以在开发环境中输出SQL语句及其执行时间,帮助优化SQL性能。
- ** - PerformanceInterceptor**:SQL性能分析拦截器。
示例代码
以下是一些功能的示例代码:
CRUD 操作
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
    // 使用IService提供的CRUD方法
}自动填充
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
    }
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
    }
}乐观锁
@TableName("user")
public class User {
    @Version
    private Integer version;
}逻辑删除
@TableName("user")
public class User {
    @TableLogic
    private Integer deleted;
}分页查询
IPage<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectPage(page, null);条件构造器
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "John");
List<User> users = userMapper.selectList(queryWrapper);代码生成
AutoGenerator mpg = new AutoGenerator();
mpg.setGlobalConfig(new GlobalConfig().setOutputDir("D://codegen"));
mpg.setDataSource(new DataSourceConfig().setUrl("jdbc:mysql://localhost:3306/test"));
mpg.setPackageInfo(new PackageConfig().setParent("com.example"));
mpg.setStrategy(new StrategyConfig().setInclude("user"));
mpg.execute();这些功能点展示了MyBatis-Plus的强大功能和灵活性,可以大大简化开发工作,提高开发效率。