分页方式(原生和pageInfo分页插件)

本文介绍了Java后端进行分页的两种方式:原生分页和使用PageHelper插件的PageInfo分页。原生分页需要手动封装总条数和分页数据,而在Service层编写SQL。PageHelper插件则简化了这一过程,通过设置当前页码和每页条数即可实现分页,同样需要将分页后的数据传给前端。

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

1.原生的分页方式
准备一个类 封装数据总条数(total) 和 分页后的数据(List) 传给前台,让前台解析,赋值给对应的form表单和总条数

//只是封装总条数 和分页数据  方便前台取值
@Data //一个插件:省略get/set/tostring/无参构造 方法
@AllArgsConstructor //有参构造
@NoArgsConstructor //无参构造
public class PageList<T> {
  //总条数
  private Long total = 0L;
  //空数组:数据
  private List<T> result = new ArrayList<>();
}

准备一个类 封装总条数 和 当前页码

@Data
@AllArgsConstructor
@NoArgsConstructor
public class BaseQuery {
	  //当前页
	  private Integer currentPage;
	  //每页条数
	  private Integer pageSize;
	
	  //分页开始位置   javaBean 通过 get/set 取值赋值 #{begin}
	  public Integer getBegin(){
	    return (currentPage - 1) * pageSize ;
	  }
}

在Service层中 一个方法中的业务代码(分页):

 @Override
public PageList<Department> findByQuery(DepartmentQuery query) {
    //总条数
    Long total = departmentMapper.findCount(query);
    //无数据
    if (total == 0L) {
      return new PageList<>();
    }
    //有数据
    List<Department> list = departmentMapper.findByAll(query);
    //返回给Controller层 一个PageList<>对象:封装了总条数和分页后的数据
    return new PageList<>(total, list);
}

在*mapper.xml中 sql语句:

LIMIT #{begin},#{pageSize}

2.pageInfo(PageHelper分页)

导包:
 <!-- pagehelper分页插件依赖 -->
 <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
    </dependency>
</dependencies>

准备一个类 封装 当前页码 和每页条数

@Data
public class BaseQuery {
	//当前页
    private Integer pageNum ;
    //每页条数
    private Integer pageSize ;
    }
}

Service层:一个方法中的业务代码

@Override
public PageInfo<Role> findByPage(RoleQuery roleQuery) {
  	//固定语法
  	PageHelper.startPage(roleQuery.getPageNum(),roleQuery.getPageSize());
    //如果使用PageHelper分页的话,那么下面的查询结果会自动地封装成Page对象
    Page<Role> page = roleMapper.findAll(roleQuery);
    return new PageInfo<Role>(page);
}

准备一个类 封装数据总条数(total) 和 分页后的数据(List) 传给前台,让前台解析,赋值给对应的form表单和总条数

//只是封装总条数 和分页数据  方便前台取值
@Data //一个插件:省略get/set/tostring/无参构造 方法
@AllArgsConstructor //有参构造
@NoArgsConstructor //无参构造
public class PageList<T> {
  //总条数
  private Long total = 0L;
  //空数组:数据
  private List<T> result = new ArrayList<>();

}

Controller层:

public PageList<T> xxx(){
	//pageInfo 底层封装了 总条数 和 分页后的数据
	 PageInfo pageInfo = ***service. findByPage() ;
	 //pageInfo 自带的2个方法 取出总条数 和数据
	 return new PageList<>(pageInfo.getTotal(),pageInfo.getList() )
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值