分页的几种写法 (除去自定义分页)

文章介绍了如何在Java项目中实现分页查询,包括使用pageHelper和MybatisPlus两种方式。在pageHelper中,通过添加依赖并调用startPage方法来实现。而在MybatisPlus中,配置拦截器并利用LambdaQueryWrapper构造查询条件,进行分页查询。此外,还提到了自定义SQL配合MybatisPlus的分页方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

stream

     long sumCount = list.stream()
                .filter(item -> hdinfoCarNoSet.contains(String.valueOf(item.get("billId"))))
                .count();

        List<Map> filteredList = list.stream()
                .filter(item -> hdinfoCarNoSet.contains(String.valueOf(item.get("billId"))))
                .skip((page - 1) * limit)
                .limit(limit)
                .collect(Collectors.toList());

pageHelp分页

导入依赖必须是这个依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
     if (pageSize != null && pageSize != null) {
            PageHelper.startPage(pageNo, pageSize);
        }
//查询语句
        List<Map<String, Object>> list = teamBuildingService.contactinformation(indexInstitution, regionCode);
        if (pageNo != null && pageSize != null) {
            PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(list);
            return R.ok(pageInfo);
        }
        return R.ok(list);

   if (pageSize != null && pageSize != null) {
            PageHelper.startPage(pageNo, pageSize);
        }
//查询语句
        List<Map<String, Object>> list = teamBuildingService.contactinformation(indexInstitution, regionCode);
        if (pageNo != null && pageSize != null) {
            PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(list);
            return R.ok(pageInfo);
        }
        return R.ok(list);

 mybaties 分页

package com.mjh.regie.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 *  配置Mp 分页
 */
@Configuration
public class MybatiesPlusConfig {


    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }

}
       //构建分页构造器
    Page pageInfo = new Page(page, pageSize);
       //条件构造器
       LambdaQueryWrapper<Employee> queryWrapper=new LambdaQueryWrapper();
        if (name!=null) {
            queryWrapper.like(Employee::getUsername,name);
        }
       //添加排序
       queryWrapper.orderByDesc(Employee::getUpdateTime);
   //分页
       return R.success( employService.page(pageInfo,queryWrapper));
  Page<NaturalReserve> page = new Page(
                Optional.ofNullable(pageNo).orElse(1),
                Optional.ofNullable(pageSize).orElse(5));

 LambdaQueryWrapper<NaturalReserve> queryWrapper = new LambdaQueryWrapper<>();

     //构建查询条件
        queryWrapper.in(NaturalReserve::getDistCode, childrenIds)
                .eq(NaturalReserve::getLevel, level)
                .like(StringUtils.hasText(name), NaturalReserve::getName, name)
                .orderByDesc(NaturalReserve::getName);
        Page<NaturalReserve> result = naturalReserveMapper.selectPage(page, queryWrapper);

//返回数据
     Map<String, Object> map = new HashMap<>();
        map.put("pageNo", result.getCurrent());
        map.put("pageSize", result.getSize());
        map.put("total", result.getTotal());
        map.put("data", result.getRecords());
        return map;

自定义sql 配合mybaitesplus 分页

   
//虽然传入的是map  但是底层 加入 的list<Map>所以还是会查出来多条数据
Page<Map<String, Object>> page = new Page(
                Optional.ofNullable(pageNo).orElse(1),
                Optional.ofNullable(pageSize).orElse(5));
  

//自己的sql 语句
        IPage<Map<String, Object>> list = naturalReserveMapper.pageList(page, regionCode, name, level);

//返回数据
        Map<String, Object> map = new HashMap<>();
        map.put("pageNo", list.getCurrent());
        map.put("pageSize", list.getSize());
        map.put("total", list.getTotal());
        map.put("data", list.getRecords());
        return  map;

<think>好的,我现在需要解决用户的问题:如何关闭分页查询的功能或方法。首先,我得理解分页查询的常见实现方式,然后找到对应的关闭方法。根据用户提供的引用内容,分页查询主要有两种方式,真分页和假分页。真分页是每次翻页都查询数据库,而假分页是一次性获取所有数据然后在客户端分页。用户可能想关闭的是服务器端的分页功能,比如使用MyBatis-Plus时的分页拦截器,或者是关闭某个特定框架的分页设置。 首先,用户提到的引用[4]指出,MyBatis-Plus的分页功能默认关闭,需要手动添加拦截器。所以如果要关闭,可能需要移除这个拦截器。另外,如果用户使用了PageHelper,它默认开启分页,可能需要在代码中不调用其startPage方法,或者配置拦截器的开关。 接下来,我需要考虑不同的场景。比如在MyBatis-Plus中,如果已经配置了分页拦截器,关闭的话可能需要从配置类中删除或注释掉添加拦截器的代码。对于其他框架或自定义实现,可能需要调整查询方法,不再传递分页参数,或者修改SQL语句去掉LIMIT和OFFSET。 然后,假分页的情况,如果用户想关闭真分页,改为一次性查询所有数据,可能需要调整后端的分页逻辑,直接返回所有数据,而不是按页查询。同时,前端也需要调整,不再发送分页参数,或者后端忽略这些参数。 另外,用户引用的其他内容,比如引用[5]提到的Oracle分页查询,可能涉及特定的SQL写法,关闭的话需要移除分页的SQL部分,比如ROWNUM的条件。或者在Java代码中,修改查询方法,不进行分页处理,直接执行完整的查询。 总结可能的解决方案:1. 框架配置层面,如MyBatis-Plus移除分页拦截器;2. 代码层面不调用分页方法;3. 修改SQL语句去掉分页关键字;4. 调整参数传递,忽略分页参数。需要根据用户具体使用的技术栈来推荐相应的方法。用户的问题比较泛,可能需要涵盖不同情况下的关闭方式,确保回答全面。</think>### 分页查询功能的关闭方法 根据不同的分页实现方式,关闭分页查询的方法可分为以下几种场景: --- #### 1. **MyBatis-Plus 分页关闭** 若使用 MyBatis-Plus 的分页功能(需依赖 `PaginationInnerInterceptor` 拦截器),关闭方法如下: - **移除分页拦截器配置** 在 MyBatis-Plus 配置类中注释或删除拦截器添加代码: ```java @Configuration public class MybatisPlusConfig { //@Bean //public MybatisPlusInterceptor mybatisPlusInterceptor() { // MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); // return interceptor; //} } ``` 移除后,分页查询会退化为普通查询,直接返回全部数据[^4]。 --- #### 2. **PageHelper 分页关闭** PageHelper 通过 `startPage()` 方法触发分页,关闭方法: - **不调用 `startPage()` 方法** 在查询前避免调用分页方法: ```java // 注释或删除以下代码 // PageHelper.startPage(pageNum, pageSize); List<Product> products = productDao.findAllProduct(); ``` 或通过配置文件设置 `autoRuntimeDialect=false` 关闭自动分页。 --- #### 3. **手动分页实现关闭** 若采用手动分页逻辑(如 SQL 中添加 `LIMIT` 或 `ROWNUM`): - **修改 SQL 语句** 移除 SQL 中的分页关键字: ```sql -- 原始分页查询 SELECT * FROM products LIMIT 10 OFFSET 0; -- 关闭分页后 SELECT * FROM products; ``` - **忽略分页参数** 在代码中不处理 `page` 和 `pageSize` 参数: ```java public List<Product> findAllProduct(int page) { // 忽略 page 参数 return query("SELECT * FROM products"); } ``` --- #### 4. **前端分页(假分页)关闭** 若使用假分页(一次性查询所有数据,前端分页): - **后端直接返回全量数据** 确保 `findAllProduct()` 方法不添加分页逻辑: ```java public List<Product> findAllProduct() { return query("SELECT * FROM products"); // 无分页条件 } ``` 前端需调整逻辑,不再依赖分页参数[^2]。 --- #### 5. **动态参数控制** 通过参数动态决定是否分页: ```java public List<Product> getProducts(int page, int pageSize, boolean enablePaging) { if (enablePaging) { // 执行分页查询 return queryWithPaging(page, pageSize); } else { // 返回全部数据 return queryAll(); } } ``` --- ### 关键点总结 | 场景 | 关闭方法 | 影响范围 | |--------------------|--------------------------------|----------------| | MyBatis-Plus | 移除分页拦截器配置 | 全局生效 | | PageHelper | 不调用 `startPage()` | 单次查询生效 | | SQL 手动分页 | 删除 `LIMIT`/`OFFSET` | 查询逻辑直接变更 | | 前端假分页 | 后端返回全量数据 | 前后端协同调整 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值