MyBatis-Plus主要提供了哪些功能?
MyBatis-Plus是一个基于 MyBatis 的增强工具库,它简化了 MyBatis 在开发过程中的常见操作,提供了一些便捷的功能。以下是 MyBatis-Plus 主要提供的功能:
- CRUD 操作
MyBatis-Plus 提供了优秀的 CRUD 操作,简化了开发人员从0开始自主编写 CURD 代码,并且支持分页查询。
例如,以下是在 Mybatis-plus 中使用 Lambda 处理器进行查询:
List<User> userList = userMapper.selectList(Wrappers.<User>lambdaQuery()
.eq(User::getAge, 25)
.like(User::getName, "雨")
// 这里可以添加所有 sql 操作,如 between、orderBy desc 等
);
- 条件构造器
MyBatis-Plus 提供了方便高效的条件构造器。 该构造器可以帮助开发人员快速构建数据查询条件,省去手写 SQL 的繁琐过程,提高了代码可读性和减少了错误率。
例如,以下例子是先使用 lambda 表达式构造一个 Select 查询条件,然后组合多个排序条件:
List<User> userList =
userMapper.selectList(
Wrappers.lambdaQuery(User.class)
.gt(User::getAge, 18)
.and(wrapper -> wrapper.gt(User::getAge, 30).or().eq(User::getEmail, "test@123.com"))
.orderByAsc(User::getAge)
.orderByDesc(User::getCreateTime)
);
- 自动代码生成器
MyBatis-Plus 提供了一个方便的自动代码生成器,可以根据现有的数据库表自动生成 Entity、Mapper、Service 和 Controller 等所有相关的类。
例如,我们在 Maven 中添加以下代码,就可以通过执行启动器自动生成代码:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>x.x.x</version>
</dependency>
- 分页查询
MyBatis-Plus 对分页功能提供了非常好的支持。可以将分页条件作为参数传递给 MyBatis Mapper 方法,并返回分页数据 Page 对象,非常方便快捷。
例如,以下例子是查询 user 表中第一页的 10 条数据:
Page<User> userPage = new Page<>(1, 10);
userMapper.selectPage(userPage, Wrappers.emptyWrapper());
- 主键策略配置
MyBatis-Plus 主键策略提供各种类型选择,支持自增 Id、UUID、REDIS等等多种方式。 开发人员只需在实体类上用注解声明即可。
例如,以下例子是自动生成唯一主键(ID),并且 ID 在插入数据前已经赋值了。
@Data
public class User {
@TableId(type = IdType.ASSIGN_UUID)
private String id;
private String name;
private Integer age;
}
综上所述,MyBatis-Plus 提供了许多 MyBatis 中没有直接支持的功能,如代码生成器、条件构造器、主键策略配置等。其最大的优点在于提供了快捷、方便的编码方式,并且良好地与 MyBatis 结合,是开发人员提高开发效率和降低维护成本的优秀工具库。