Mybatis-Plus的逻辑删除
🍵分页查询
Mybatis-Plus自带分页查询的插件,不用编写一些类,但需要我们简单配置。
首先还是在我们的configuration配置类中配置:
//分页的插件
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
配置完上面内容即可使用:
@Test
public void testPage(){
Page<User> page=new Page<>(2,3);//前面数据表示当前页,后面数据表示每一页显示几条数据。
userMapper.selectPage(page,null);//查询条件为空
System.out.println(page.getCurrent());//获取当前页
System.out.println(page.getRecords());//获取每页数据的list集合
System.out.println(page.getSize());//每页显示记录的条数
System.out.println(page.getTotal());//总记录数
System.out.println(page.getPages());//总页数
System.out.println(page.hasNext());//是否有下一页
System.out.println(page.hasPrevious());//是否有上一页
}
查询结果如下:根据第一行的日志SQL语句,Mybatis-Plus在帮我们查询时自带了Limit关键字进行查询。
🍹逻辑删除
首先,需要知道什么是逻辑删除:
物理删除:真实删除,直接将对应的数据从数据库中删除,之后查询不到此条被删除数据
逻辑删除:假删除,将对应的数据中代表是否被删除字段状态修改为“被删除状态”,一般用0和1表示,之后在数据库中仍旧能看到此条数据记录,存在有一个删除字段,用0和1代表是否数据被删除。
首先还是先在数据库和实体类中添加字段
/**
* @TableLogic 逻辑删除注解
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
private Integer deleted;
ALTER TABLE `user` ADD COLUMN `deleted` boolean
然后跟上面的操作一样,在handler类中进行配置
@Override
public void insertFill(MetaObject metaObject) {
//这里和上面的一样,不写了,占字数🤣。
this.setFieldValByName("deleted", 0, metaObject);//表示deleted字段的默认值为0,在插入时字段填充字段值。
}
同时,也可以在Properties或Ymal中对默认值进行设置。
mybatis-plus.global-config.db-config.logic-delete-value=1//删除
mybatis-plus.global-config.db-config.logic-not-delete-value=0//没有删除
旧版的还需要再配置类中添加配置:
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
首先我们先编写,删除一条记录的代码:
/**
* 测试 逻辑删除
*/
@Test
public void testLogicDelete() {
int result = userMapper.deleteById(7L);
System.out.println(result);
}
运行程序,查看控制台语句:
我们经过测试后发现,数据并没有被删除,deleted字段的值由0变成了1
测试后分析打印的sql语句,是一条update
注意:被删除数据的deleted 字段的值必须是 0,才能被选取出来执行逻辑删除的操作
最后操作查询所有字段的语句:
/**
* 测试 逻辑删除后的查询:
* 不包括被逻辑删除的记录
*/
@Test
public void testLogicDeleteSelect() {
User user = new User();
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
可以看出控制台的SQL语句自动加上了deleted不为0的条件。
文章到这里就结束了,下篇我们将继续介绍Mybatis-Plus的其他知识点,喜欢的大佬可以多多支持哦😉😉。
如果有什么疑问的地方请指出,诸佬们一起讨论🍻🍻
最后再次给大家安利一波牛客,牛客真的很不错的软件,点击刷题神器
注册牛客,快来和博主一起刷题吧嘿嘿嘿👏
同时祝伙伴儿找到理想的工作及猛猛地提升算法能力哦😏
再次感谢各位小伙伴儿们的支持🤞
- 点赞
- 收藏
- 关注作者
评论(0)