返回顶部
首页 > 资讯 > 后端开发 > Python >mybatis plus实现分页逻辑删除
  • 490
分享到

mybatis plus实现分页逻辑删除

2024-04-02 19:04:59 490人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

一、分页 通过mybatis-plus实现分页,也是很简单,插件大法。 1、配置分页插件 把分页的插件也配置到统一的配置类里: @Configuration // 配置扫描mappe

一、分页

通过mybatis-plus实现分页,也是很简单,插件大法。

1、配置分页插件

把分页的插件也配置到统一的配置类里:

@Configuration
// 配置扫描mapper的路径
@MapperScan("com.pingguo.mpdemo.mapper")
public class MpConfig {
    // 乐观插件
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }
   // 分页插件
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

2、使用分页

还是在测试类中增加测试方法,这里列了常用到的方法,后面配合前端页面做分页功能时候,都要用上。

    //  测试分页
    @Test
    void testPaging() {
        // 创建分页对象,current为当前页数,size为每页最大记录数
        Page<User> pageUser = new Page<>(1, 5);
        // 调用分页查询方法,传入分页对象-pageUser,wrapper是构造条件对象,这里暂时写null
        userMapper.selectPage(pageUser, null);
        System.out.println("当前页:"+ pageUser.getCurrent());
        System.out.println("当前页数据list集合:" + pageUser.getRecords());
        System.out.println("每页显示记录数:" + pageUser.getSize());
        System.out.println("总记录数:" + pageUser.getTotal());
        System.out.println("总页数:" + pageUser.getPages());
        System.out.println("是否有下一页:" + pageUser.hasNext());
        System.out.println("是否有上一页:" + pageUser.hasPrevious());
    }

目前数据表共12条数据,运行一下,对比下结果:

当前页:1
当前页数据list集合:[User(id=2, name=修改名称222, age=19, email=pingguotest1@pingguo.com, createTime=Thu Dec 24 23:27:20 CST 2020, updateTime=Thu Dec 24 23:27:23 CST 2020, version=null), User(id=3, name=wesson3, age=20, email=pingguotest1@pingguo.com, createTime=Wed Dec 23 23:27:32 CST 2020, updateTime=Thu Dec 24 23:27:36 CST 2020, version=null), User(id=4, name=daxiong, age=22, email=pingguotest1@pingguo.com, createTime=null, updateTime=Fri Dec 25 00:55:02 CST 2020, version=null), User(id=5, name=wesson5, age=20, email=pingguotest1@pingguo.com, createTime=null, updateTime=null, version=null), User(id=1342322873243996161, name=李白6, age=66, email=laowang@123.com, createTime=Fri Dec 25 12:14:47 CST 2020, updateTime=Fri Dec 25 15:43:11 CST 2020, version=2)]
每页显示记录数:5
总记录数:12
总页数:3
是否有下一页:true
是否有上一页:false

二、逻辑删除

逻辑删除并不是真正从数据表开删除数据记录,只是通过一个字段去标识出这条记录被删除了,比如deleted,0表示未删除,1表示已删除。

1、在数据表增加deleted字段。

2、实体类添加注解@TableLogic

在对应实体类里增加属性,并且加上@TableLogic注解。为了方便,我还加了自动填充。

@Data
public class User {
    @TableId(type = IdType.ID_WORKER)
    private Long id;
    private String name;
    ... ...
    @TableLogic   // 加上逻辑删除注解
    @TableField(fill = FieldFill.INSERT) //为了方便,加了自动填充
    private Integer deleted;
}

3、自动填充(非必须)

自动填充的话,这里也需要增加:

@Component //此注解表示 将其交给spring去管理
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
        this.setFieldValByName("version", 0, metaObject); //为了第一次新增就设置版本值
        this.setFieldValByName("deleted", 0, metaObject); //新增数据就默认设置0
    }
}

4、application.properties 加入配置(非必须)

这里默认情况下,删除是1,没删除是0。
如果你想改成别的值,那么就要在application.properties 加入配置,换成你需要设置的值。

mybatis-plus.global-config.db-config.logic-delete-value=100
mybatis-plus.global-config.db-config.logic-not-delete-value=300

5、配置插件

@Configuration
// 配置扫描mapper的路径
@MapperScan("com.pingguo.mpdemo.mapper")
public class MpConfig {
    // 乐观锁插件
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }
    ... ...
    // 逻辑删除
    @Bean
    public IsqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }
}

6、试一试

因为之前的数据,都没有值,我手动把id=2的设置了0,然后去删除id=2的数据。

     // 测试 逻辑删除
    @Test
     void testLogicDelete() {
        int result = userMapper.deleteById(2L);
        System.out.println(result);
    }

可以看到执行的sql其实是个update

JDBC Connection [HikariProxyConnection@2144912729 wrapping com.Mysql.cj.jdbc.ConnectionImpl@44c13103] will not be managed by Spring
==>  Preparing: UPDATE user SET deleted=1 WHERE id=? AND deleted=0 
==> Parameters: 2(Long)
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@10f19647]
1

成功更新。

7、另外

MP查询数据的时候会自动过滤掉被逻辑删除的数据的,不需要我们额外处理。
执行查询试试:

    //    查询
    @Test
     void findAll() {
        List&lt;User&gt; users =  userMapper.selectList(null);
        System.out.println(users);
    }
SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0

以上就是mybatis plus实现分页逻辑删除的详细内容,更多关于mybatis plus分页逻辑删除的资料请关注编程网其它相关文章!

--结束END--

本文标题: mybatis plus实现分页逻辑删除

本文链接: https://lsjlt.com/news/149949.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mybatis plus实现分页逻辑删除
    一、分页 通过mybatis-plus实现分页,也是很简单,插件大法。 1、配置分页插件 把分页的插件也配置到统一的配置类里: @Configuration // 配置扫描mappe...
    99+
    2024-04-02
  • Mybatis-plus逻辑删除
    实际开发中,数据删除一般有2种选择: 1:物理删除 物理删除,也称为硬删除,指的是数据直接从数据库中移除,对应的SQL语句:DELETE FROM 表 where 条件,这种删除成功后,数据就无法再恢复啦。 2:逻辑删除 ...
    99+
    2023-09-01
    数据库 mysql sql
  • springboot+mybatis-plus+oracle实现逻辑删除
    最近在做一个前后端分离的小项目,需要删除用户表的用户,但是用户再别的表做了外键,所以只能做成逻辑删除,一通百度查资料后得以实现: 1、用户实体类 package com.sie....
    99+
    2024-04-02
  • MyBatis-Plus怎么实现逻辑删除
    这篇“MyBatis-Plus怎么实现逻辑删除”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MyBatis-Plus怎么实现...
    99+
    2023-06-30
  • MyBatis-Plus实现逻辑删除的示例代码
    目录一、引言二、具体实现步骤一:首先我们需要配置未删除、已删除分别标识的状态码是什么,这里采用的yml格式。步骤二:在实体类对应的字段上加上注解@TableLogic即可。步骤三:测...
    99+
    2024-04-02
  • mybatis-plus怎么配置逻辑删除
    本篇内容介绍了“mybatis-plus怎么配置逻辑删除”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!mybatis-plus配置逻辑删除引...
    99+
    2023-07-02
  • mybatis-plus如何配置逻辑删除
    目录mybatis-plus配置逻辑删除逻辑删除失效原因及解决方案测试依赖解决方案mybatis-plus配置逻辑删除 引入jar包 <!--mybatis-plus-->...
    99+
    2024-04-02
  • springboot中怎么利用mybatis-plus和oracle实现逻辑删除
    springboot中怎么利用mybatis-plus和oracle实现逻辑删除,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。用户实体类package com.sie...
    99+
    2023-06-20
  • MyBatis-Plus逻辑删除和字段自动填充的实现
    目录一、ID生成策略1、使用@TableId注解2、全局ID生成策略二、逻辑删除1、全局配置2、使用@TableLogic注解三、字段自动填充1、指定字段自动填充2、自定义MetaO...
    99+
    2022-11-13
    MyBatis-Plus逻辑删除 MyBatis-Plus 字段自动填充
  • Mybatis plus逻辑删除注解@TableLogic的使用
    目录物理删除和逻辑删除@TableLogic注解@TableLogic注解默认值:@TableLogic注解用法首先这个注解是苞米豆出品,也就是我们常说的mybatis升级版的东西。...
    99+
    2024-04-02
  • MyBatis-Plus的物理删除和逻辑删除(使用场景)
    物理删除:真实删除,将数据从数据库中删除,删除后查询不到被删除的数据 逻辑删除:假删除,方便删除之后的数据恢复 在表中添加一个status字段,作为删除的标准,每次删除时,修改标志...
    99+
    2024-04-02
  • 关于mybatis-plus逻辑删除无效的问题
    添加如下注解value代表默认值delval代表删除时的值 @TableLogic(value = "0", delval = "1") @TableField...
    99+
    2024-04-02
  • Mybatis plus逻辑删除注解@TableLogic的方法是什么
    Mybatis plus逻辑删除注解@TableLogic的方法是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先这个注解是苞米豆出品,也就是我们常说的myba...
    99+
    2023-06-29
  • MyBatis-Plus解决逻辑删除与唯一索引的问题
    目录简介问题复现建库建表代码测试解决方案方案1:将字段设置为id(推荐)方案2:将字段设置为当前时间(不推荐)简介 说明 本文用示例介绍MyBatis-Plus如何解决逻辑删除与唯一...
    99+
    2022-11-13
    MyBatis-Plus 逻辑删除 MyBatis-Plus 唯一索引
  • mybatisPlus怎么实现逻辑删除
    本篇内容主要讲解“mybatisPlus怎么实现逻辑删除”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mybatisPlus怎么实现逻辑删除”吧!网上大部分的关于mybatisPlus的逻辑删除...
    99+
    2023-06-29
  • mybatisplus逻辑删除如何实现
    这篇文章主要介绍了mybatisplus逻辑删除如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mybatisplus逻辑删除如何实现文章都会有所收获,下面我们一起来看看吧。mybatisplus中逻辑删...
    99+
    2023-07-05
  • thinkphp怎么实现逻辑删除
    本篇内容主要讲解“thinkphp怎么实现逻辑删除”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“thinkphp怎么实现逻辑删除”吧!ThinkPHP 逻辑删除:什么是逻辑删除及如何使用它?在一...
    99+
    2023-07-05
  • 关于mybatis-plus逻辑删除自动填充更新时间的问题
    目录前言问题发现寻找原因解决方法方法一方法二补充写法前言 mybatis-plus是对mybatis的增强,mybatis-plus更像是面向对象编程,数据库基本CRUD的操作可以不...
    99+
    2024-04-02
  • Mybatis-Plus实现分页查询
    Mybatis-Plus实现分页查询 文章目录 Mybatis-Plus实现分页查询1.1技术概述1.2技术详述1.2.1配置分页插件1.2.2自定义分页1、如果你的mapper没有继承BaseMapper2、如果你的mapper继...
    99+
    2023-08-17
    mybatis java spring boot
  • mybatisPlus填坑之逻辑删除的实现
    网上大部分的关于mybatisPlus的逻辑删除的配置介绍都是有问题的,原因可能是官网已经做了更新!!!错误如图: 正确的配置是: SpringBoot 配置方式: applica...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作