简介
MyBatis-Plus(简称 MP)是一个 Mybatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
Maven依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.5.1</version>
</dependency>
注解讲解
@TableName 指定表所对应的实体类
使用:表名注解,标识实体类对应的表。
位置:在Dao层实体类上。
常用属性:
value:表名
excludeProperty:需要排除的属性名
@TableName("duck")
public class Duck{
private Long id;
private String name;
private Integer age;
}
@TableId 标明主键
使用:主键注解
位置:实体类的主键字段
@TableName("duck")
public class Duck{
@TableId
private Long id;
private String name;
private Integer age;
}
@TableField 对应数据库字段与实体类字段
使用:非主键字段注解
位置:非主键字段上
常用参数:
exist:标明是否为数据库字段
@TableName("duck")
public class Duck{
@TableId
private Long id;
@TableField("nick_name")
private String name;
private Integer age;
}
@FieldFill 一般用于设置自动填充时间
使用:自动填充字段的值
位置:需要自动填充的字段上
@TableLogic 逻辑删除标志字段
使用:标明此字段需要逻辑删除
位置:逻辑删除的字段
相关配置
mybatis-plus:
global-config:
db-config:
logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
@TableName("duck")
public class Duck{
@TableId
private Long id;
@TableField("nick_name")
private String name;
private Integer age;
@TableLogic
private Integer status;
}
常用的条件方法
eq 等价于 =
eq("name","duck") ----> name = 'duck'
ne 等价于 <>
ne("name","duck") ----> name <> 'duck'
gt 等价于 >
gt("age",3) ----> name > 3
ge 等价于 >=
ge("age",3) ----> name >= 3
lt 等价于 <
lt("age",3) ----> name < 3
le 等价于 <=
le("age",3) ----> name <= 3
between BETWEEN 参数1 AND 参数 2
between("age",0,3) ---> age between 0 and 3
notBetween NOT BETWEEN 参数1 AND 参数 2
notBetween("age",0,3) ---> age not between 0 and 3
like 模糊查询
like("name","duck") ---> name like '%duck%'
notLike 模糊查询
notLike("name","duck") ---> name not like '%duck%'
likeLeft 前%模糊查询
likeLeft("name","duck") ---> name like '%duck'
likeRight 后%模糊查询
likeRight("name","duck") ---> name like 'duck%'
isNull 为空
isNull("name") ---> name is null
isNotNull 不为空
isNotNull("name") ---> name is not null
in
in("id",{1,2,3}) ---> id in (1,2,3)
notIn
notIn("id",{1,2,3}) ---> id not in (1,2,3)
groupBy 分组
groupBy("name") ---> group by name
orderByAsc 升序
orderByAsc("id") ---> order by id ASC
orderByDesc 降序
orderByDesc("id") ---> order by id DESC
orderBy 排序
orderBy(true, true, "id") ---> order by id ASC
orderBy(true, false, "id") ---> order by id DESC
Wrapper 条件构造抽象类
QueryWrapper 或者 LambdaQueryWrapper
//创建一个 🦆的QueryWrapper 对象
QueryWrapper<Duck> queryWrapper = new QueryWrapper<>();
//根据id查询🦆
queryWrapper.eq(Duck::getId,param.getId());
//查询🦆列表
List<Duck> duckList = duckMapper.selectList(queryWrapper);
//查询单个🦆
Duck duck = duckMapper.selectOne(queryWrapper);
UpdateWrapper 或者 LambdaUpdateWrapper
//构造更新Wrapper
LambdaUpdateWrapper<Duck> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
//按照名称更新
lambdaUpdateWrapper.eq(Duck::getName, param.getName());
//执行更新
Duck duck = new Duck();
duckMapper.update(duck,lambdaUpdateWrapper);