【项目实战】07-员工信息分页查询(Mybatis-plus分页查询详解)

注:本文章基于黑马程序员相关视频及资料进行编写,代码简单,较容易理解,若有问题或者源码资料获取可以在评论区留言或者联系作者!



一、需求分析

系统中员工信息很多的时候,如果在一个页面全部展现出来会比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示列表数据;



程序执行过程:

  1. 页面发送Ajax请求,将分页查询参数(page,pagesize,name)提交到服务器;
  2. 服务端COntroller接受页面提交的数据并调用Service查询数据;
  3. Service调用Mapper操作数据库,查询分页数据;
  4. Controller将查询到的分页数据响应给页面;
  5. 页面接受到分页数据并通过ElementUI的Table组件展示到页面上;

二、编码实现

这里主要使用Mybatis-plus的分页插件进行实现
具体使用可以参考mybatis-plus的官方参考文档:

https://baomidou.com/pages/97710a/#%E5%B1%9E%E6%80%A7%E4%BB%8B%E7%BB%8D

具体实现:

(1)创建mybatis-plus配置类MybatsiPlusConfig .java:
由代码可以发现,Mybatis-plus分页查询的本质是采用Mybatis-plus的拦截器,创建一个分页拦截器,对查询进行再次封装转发查询;

@Configuration
public class MybatsiPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor=new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;

    }
}

(2)使用Page分页查询构造器传入页数page,和每页显示条数pageSize,然后再构建一个查询构造器,如果传入了员工的姓名,则要进行模糊查询;最后使用Service提供的page分页查询方法,传入page构造器对象和查询构造器对象,进行分页查询;最后将存储结果的page查询构造器通过公共类R进行返回;

/*
    * 分页查询员工*/
    @GetMapping("/page")
    public R<Page>  page( int page, int pageSize, String name){
        log.info("page={},pageSize={},name={}",page,pageSize,name);
        //构造分页构造器
        Page pageInfo=new Page(page,pageSize);

        //构造条件构造器
        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper();
        queryWrapper.like(!StringUtils.isEmpty(name),Employee::getUsername,name);
        queryWrapper.orderByDesc(Employee::getUpdateTime);



        //执行查询
        employeeService.page(pageInfo,queryWrapper);


        return R.success(pageInfo);

    }

(3)运行项目,在前端可以查询到我们分页查询的信息;
在这里插入图片描述


三、底层解释

我们对pageInfo中的信息进行断点查看,可以发现,当使用构造器构造出pageInfo对象时,只含有size(传入的pageSize)和current(传入的page)
在这里插入图片描述
当使用分页查询方法之后,会将查询到的数据自动存入到创建的pageInfo对象中
在这里插入图片描述
可以发现,records中存储了按照需求查询到的数据,这里表示查询到到每页显示一条数据的第一页数据;total表示总计有多少条数据;所以前端开发中一般都是对这两个值进行查询和操作




注意:程序每次执行过程中都会执行一次请求信息,如下所示:

在这里插入图片描述

最后通过前端信息返回的结果我们也能清楚的看到返回的结果;

在这里插入图片描述


总结:

这里我们对如何使用mybatis-plus的分页查询插件作了详细的叙述,并结合项目开发作了深层次了解,后面项目将会对员工的账号状态进行相关操作!


如果感觉内容写的还不错的话,一键三连不迷路!!!!
后面将会更新更多学习内容,一起学习吧!!!!!!
在这里插入图片描述

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
回答: 根据引用\[1\]和引用\[2\]的内容,mybatis-plus分页查询需要配置分页插件才能实现真正的分页。如果没有配置分页插件,total(总条数)和pages(总页数)可能会显示为0。所以,需要添加一个配置类来配置分页插件。另外,根据引用\[3\]的内容,mybatis-plus和mybatis在分页代码上有一些差异。在mybatis中,需要将当前页需要 - 1再乘以每页条数传入#{page};而在mybatis-plus中,可以直接使用new Page(page, size)来实现分页。如果mybatis-plus分页查询报500错误,可能是由于分页配置不正确或者前后端传参有问题。请检查分页配置和前后端传参是否正确。 #### 引用[.reference_title] - *1* *3* [【SpringBoot】MyBatis与MyBatis-Plus分页查询问题](https://blog.csdn.net/m0_65563175/article/details/130563322)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [mybatis-plus分页查询详解](https://blog.csdn.net/w1014074794/article/details/125787908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PoJo123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值