java中常见的分页处理场景

1:Java 通过Stream流对 list 集合数据直接分页 (该场景适用于list数据已经获取到了,通常不是通过mysql数据库中获取到)

public static void main(String[] args) {
        List<String> asList = Arrays.asList("1", "2", "3", "4");
        Integer currentPageNumber = 1;//当前页
        Integer pageMaxSize = 3;//每页条数
        List<String> collect1 = asList.stream().skip((currentPageNumber - 1) * pageMaxSize).limit(pageMaxSize).collect(Collectors.toList());
        System.out.println(JSONUtils.toJSONString(collect1));
    }

2:Java从数据库中通过sql的形式查询到的 list 集合数据进行分页 -

1).添加分页插件相关依赖

   <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
            <exclusions>
                <exclusion>
                    <artifactId>mybatis-spring-boot-starter</artifactId>
                    <groupId>org.mybatis.spring.boot</groupId>
                </exclusion>
            </exclusions>
   </dependency>

2).springboot配置文件配置插件启动

mybatis:
  # mapper 位置
  mapper-locations: classpath:**/mapper/*.xml
  # 驼峰标识转换
  configuration:
    map-underscore-to-camel-case: true
# 分页插件
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

3:代码层面是处理

@GetMapping(value = "/getVillageByPage", produces = {"application/json;charset=UTF-8"})
  
    public Result getVillageByPage(String param) {
        try {
            VillageInfo villageInfo = JSON.parseObject(param, VillageInfo.class);
PageInfo<VillageInfo> page =
 PageHelper.startPage(villageInfo.getPageNo(), villageInfo.getPageSize())
                    .doSelectPageInfo(
                              () -> villageService.getVillageByPage(villageInfo)
                     );
            return new Result(ResultCodeEnum.SUCCESS, page);
        } catch (Exception e) {
            log.warn("小区查询(分页)接口请求异常", e);
            return new Result(ResultCodeEnum.ERROR);
        }
    }

当然pagehelper插件的使用也会遇到坑 ,最好了解一下该插件分页的原理。

参考:pagehelper的使用及避坑_大唐冠军侯的博客-CSDN博客_pagehelper分页使用避免的坑

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 实现分页功能的方法有很多种,下面介绍其两种比较常见的方式。 1. 使用 SQL 语句的 LIMIT 和 OFFSET 子句 在 SQL 语句使用 LIMIT 和 OFFSET 子句可以很方便地实现分页功能。LIMIT 子句用于指定每页显示的记录数,OFFSET 子句用于指定从哪个记录开始显示。例如: ``` SELECT * FROM table_name LIMIT 10 OFFSET 0; // 显示第一页,每页10条记录 SELECT * FROM table_name LIMIT 10 OFFSET 10; // 显示第二页,每页10条记录 SELECT * FROM table_name LIMIT 10 OFFSET 20; // 显示第三页,每页10条记录 ``` 在 Java ,可以通过修改 SQL 语句的 LIMIT 和 OFFSET 的值来实现分页。例如: ```java int pageSize = 10; // 每页显示的记录数 int currentPage = 1; // 当前页码 int offset = (currentPage - 1) * pageSize; // 计算偏移量 String sql = "SELECT * FROM table_name LIMIT " + pageSize + " OFFSET " + offset; ``` 2. 使用分页插件 第二种方法是使用第三方的分页插件,例如 MyBatis 分页插件或 Spring Data JPA 分页插件。这些插件可以自动根据传入的参数计算出分页所需的 SQL 语句,并返回分页结果。例如: ```java // MyBatis 分页插件 PageHelper.startPage(currentPage, pageSize); // 开始分页 List<User> userList = userMapper.selectUsers(); // 查询用户列表 PageInfo<User> pageInfo = new PageInfo<>(userList); // 封装分页信息 // Spring Data JPA 分页插件 Pageable pageable = PageRequest.of(currentPage - 1, pageSize); // 创建分页请求 Page<User> userPage = userRepository.findAll(pageable); // 查询用户列表 ``` 以上是两种实现分页功能的常见方式,具体实现方式还需要根据具体的业务场景和使用框架来选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值