1.快速开始
2.代码生成器
3.CRUD接口——Service CRUD接口
4.CRUD接口——Mapper CRUD接口
5.条件构造器
6.分页插件
7.Sequence主键
8.自定义ID生成器
9.逻辑删除
10.乐观锁插件
11.自动填充
逻辑删除其实就是不删除这条数据,只是在查询的时候查不到该数据,在修改的时候也数据也不发生变化
那么mybatis-plus是怎么实现这样的功能,其实就是设置一个标志的字段,当mybatis-plus进行逻辑删除的时候,就置该字段从1到0,这样就实现了删除的功能
举个例子:
当我删除一个id为1的人的时候,mybatis-plus内部执行的sql语句如下所示:
update user set deleted=1 where id = 1 and deleted=0
当我查找所有人的信息时,mybatis-plus内部执行的sql语句如下所示:
select id,name,deleted from user where deleted=0
注意
不是说你写的sql会给你进行组装,而是使用mybatis-plus提供的CRUD接口才有效果
1.首先进行配置
在application.properties中
#分别指定数据库进行逻辑删除的字段名,逻辑已删除值和未删除值
mybatis-plus.global-config.db-config.logic-not-delete-value=1
mybatis-plus.global-config.db-config.logic-delete-value=0
mybatis-plus.global-config.db-config.logic-delete-field=flag
2.实体类字段上加上@TableLogic注解
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="User对象", description="")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键ID")
@TableId(value = "id", type = IdType.ID_WORKER)
private Long id;
@ApiModelProperty(value = "姓名")
private String name;
@ApiModelProperty(value = "年龄")
private Integer age;
@ApiModelProperty(value = "邮箱")
private String email;
@ApiModelProperty(value = "逻辑删除")
private Integer deleted;
}
3.添加字段deleted
4.编写删除代码
@RestController
@RequestMapping("/hk")
public class UserController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/LogicDelete")
public Integer logicDelete() {
int i = userMapper.deleteById(2);
return i;
}
}
访问:http://localhost:8080/hk/LogicDelete
运行:
一条数据受影响,原本应该被删除数据,现在只是deleted的状态发生变化