分页查询功能

后台
1、在service层编写分页接口

IPage<Book> getPage(int current, int pageSize); //编写分页方法

实现对应的接口:

    @Override
    public IPage<Book> getPage(int current, int pageSize) {
        IPage<Book> page=new Page(current,pageSize);//Ipage接口,page实现类。current指示当前页。size指的是每页多少条数据
        bookDao.selectPage(page,null);
        return page;
    }

2、需要实现拦截器配置,解决sql语句使用分页出现的问题在这里插入图片描述3、编写controller层方法

 @GetMapping("{current}/{pageSize}")
  public R getPage2(@PathVariable int current, @PathVariable int pageSize,Book book){  //一定不能忘记添加路径参数
        IPage<Book> page = iBookService.getPage(current, pageSize,book);
        //如果当前页码值大于总页码值,那么重新执行查询操作,使用总页码值
        if(current>page.getPages()){
            page = iBookService.getPage((int)page.getPages(), pageSize,book);//因为getPages得到的是long类型数据线
        }
        return new R(true,page);
    }

前端页面
1、设计分页组件
在这里插入图片描述
2、在这里插入图片描述
3、
在这里插入图片描述
4、在这里插入图片描述
分页组件中的数据内容包括多个参数,因此需要去访问对应的参数获取对应的内容。
在这里插入图片描述
5、在这里插入图片描述
模糊查询
在这里插入图片描述
模糊查询需要链接字符串,可以考虑使用name字符串,但是也可以考虑传入数据模型类对象,会自动把数据传入到模型类当中,如图:在这里插入图片描述
因此后台修改查询方式为模糊查询:

IPage<Book> getPage(int current, int pageSize,Book book); //编写分页方法
 @Override
    public IPage<Book> getPage(int current, int pageSize,Book book) {
        //模糊查询!!!
        LambdaQueryWrapper<Book> lqw=new LambdaQueryWrapper<Book>();
        lqw.like(Strings.isNotEmpty(book.getType()),Book::getType,book.getType());
        lqw.like(Strings.isNotEmpty(book.getName()),Book::getName,book.getName());
        lqw.like(Strings.isNotEmpty(book.getDescription()),Book::getDescription,book.getDescription());

        IPage<Book> page=new Page(current,pageSize);
        bookDao.selectPage(page,lqw);
        return page;
    }

模糊查询的时候需要建立LambdaQueryWrapper对象,通过like条件匹配进行查询,第一个参数是boolean,表示要不要进行条件查询;第二个参数是模糊查询的属性;第三个参数是对应的值。Strings.isNotEmpty(book.getType())表示有这个type值就进行这个模糊查询,否则就不执行这个模糊查询,直接进行后面的全部查询。

JAVA 类名::方法名
<T extends BaseEntity>
T::getId
T为泛型类,getId为BaseEntity中的方法。
T::getId,得到id属性

编写表现层方法:

 @GetMapping("{current}/{pageSize}")
    public R getPage2(@PathVariable int current, @PathVariable int pageSize,Book book){  //一定不能忘记添加路径参数
        IPage<Book> page = iBookService.getPage(current, pageSize,book);
        //如果当前页码值大于总页码值,那么重新执行查询操作,使用总页码值
        if(current>page.getPages()){
            page = iBookService.getPage((int)page.getPages(), pageSize,book);//因为getPages得到的是long类型数据线
        }
        return new R(true,page);
    }
在PHP中,实现分页查询功能通常需要以下步骤: 1. 获取总记录数:首先,我们需要查询数据库或其他数据源,获取需要分页查询的数据总量。可以使用SQL语句的COUNT函数或其他方法来实现。 2. 计算总页数:将总记录数除以每页显示的记录数,并向上取整,即可得到总页数。可以使用ceil()函数来实现向上取整。 3. 获取当前页码:通过GET或POST方式获取当前页码值,并进行合法性校验。 4. 计算查询的起始位置:根据当前页码和每页显示的记录数,计算出查询的起始位置。通过公式:(当前页码-1) * 每页记录数可以得到起始位置。 5. 执行分页查询:利用计算出的起始位置和每页显示的记录数,编写SQL语句进行分页查询,并将结果返回给前端页面进行展示。 6. 生成分页导航:根据总页数和当前页码,通过循环生成分页导航,可以使用for循环或其他方法实现。同时,在生成导航时,还需要考虑页面的跳转链接和样式。 7. 实现上一页和下一页功能:根据当前页码,生成上一页和下一页的跳转链接,并进行合法性校验,确保不越界。 8. 限制非法页码访问:在获取当前页码的步骤中,对用户输入的页码进行合法性校验,确保用户输入的页码在有效范围内。 9. 显示查询结果:将查询结果显示在前端页面上,可以使用表格、列表等方式进行展示。 通过以上步骤,可以实现基本的PHP分页查询功能。根据实际需求,还可以对分页导航进行优化,并添加其他功能,如展示每页显示记录数选择、快速跳转到指定页等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值