介绍
MyBatis-Plus (简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
官网: https://mp.baomidou.com/guide/
特性
简单来说, 我们可以通过一些简单的配置, 实现大部分单表的CRUD操作, 同时内置了分页插件, 可以大幅度简化我们的开发工作
依赖
(引入mybatis-plus后, 无需再引入mybatis的依赖)
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
配置
只需将 application.yml 中的 mybatis配置头 改成 mybatis-plus
使用
使用 Mybatis-Plus 非常简单,只需要做一些简单的改动就能实现大部分的CRUD操作,如果有复杂的sql操作,也可以按照mybatis的方式自定义*Mapper.xml
1. POJO类代码
@Data // 这里使用了lombok插件
@TableName("t_user") // 类名和表明不匹配时,使用TableName指定
public class User {
@TableId(type = IdType.AUTO) // 指定主键字段并设置自增方式
private Integer id;
@TableField(value = "t_user_name") // 字段名和属性名不匹配时,使用TableField指定
private String username;
private String email;
}
2. Dao层代码
BaseMapper中定义了很多基本的单表操作,继承BaseMapper即可实现简单的CRUD
public interface UserDao extends BaseMapper<User> {
}
3. QueryWrapperd的使用
/* 1. 使用映射对象作为条件 */
User user = new User().setAge(18);
QueryWrapper<User> uqw = new QueryWrapper<>(user);
List<User> users = userDao.selectList(uqw);
/* 2. QueryWrapper设置条件 */
uqw = new QueryWrapper<>();
uqw.gt("age", 18).or().lt("age", 24);
users = userDao.selectList(uqw);
uqw = new QueryWrapper<>();
uqw.eq("age", 20).isNotNull("name"); // 默认用 and 拼接
users = userDao.selectList(uqw);
/* 3. 动态sql */
uqw = new QueryWrapper<>();
Integer age = user.getAge();
boolean ageNotEmpty = Objects.nonNull(age) && age >= 0; // 可以用一个布尔值控制是否拼接条件
uqw.eq(ageNotEmpty,"age", age);
users = userDao.selectList(uqw);