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