chengaofeng
发布于 2024-09-06 / 5 阅读
0
0

Mybatis plus功能点枚举和解释

MyBatis-Plus 是 MyBatis 的增强工具,旨在简化 MyBatis 的开发,提高开发效率。以下是 MyBatis-Plus 的一些主要功能点及其解释:

1. CRUD 接口

MyBatis-Plus 提供了丰富的 CRUD 接口,简化了常见的数据库操作。

  • **BaseMapper**:提供了基本的 CRUD 方法,如insertdeleteByIdupdateByIdselectById等。

  • **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的强大功能和灵活性,可以大大简化开发工作,提高开发效率。


评论