使用PageHelper插件实现Service层分页(分页插件pagehelper原理)

网友投稿 307 2022-08-10


使用PageHelper插件实现Service层分页(分页插件pagehelper原理)

本文实例为大家分享了使用PageHelper插件实现Service层分页的具体代码,供大家参考,具体内容如下

使用场景:

平时分页我们可以直接使用mybatis-plus中内置的IPage进行分页,一般是在mapper中写好接口,在执行sql时就将其进行分页操作,但是有些复杂的查询或者是需要拼接返回格式的数据就难以操作了,所以我们使用PageHelper插件来实现Service分页功能。

1.在pom.xml文件中导入PageHelper插件依赖

com.github.pagehelper

pagehelper

4.1.6

2.编写PageHelper配置类

package com.cdtye.itps.jjxt.config;

import java.util.Properties;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import com.github.pagehelper.PageHelper;

/**

* @Author Zhongks

* @Description //TODO 分页配置对象

* @DaTHRGSgte 14:47 2021/4/23

* @Param

* @return

**/

@Configuration

public class PageHelperConfiguration {

/**

* @Author Zhongks

* @Descriphttp://tion //TODO 分页对象实列化

* @Date 15:49 2021/4/23

* @Param []

* @return com.github.pagehelper.PageHelper

**/

@Bean

public PageHelper pageHelper() {

PageHelper pageHelper = new PageHelper();

Properties p = new Properties();

p.setProperty("offsetAsPageNum", "true");

p.setProperty("rowBoundsWithCount", "true");

p.setProperty("reasonable", "true");

p.setProperty("dialect", "Oracle");

pageHelper.setProperties(p);

return pageHelper;

}

}

3.在Service层进行分页操作:

/**

* @Author Zhongks

* @Description //TODO 列表页面显示

* @Date 18:42 2021/4/22

* @Param []

* @return java.util.List>

**/

public PageInfo> getList(BureauNoticeVo vo){

if(vo.getPage()!=null&&vo.getSize()!=null){

//设置页码数以及一页显示数量

PageHelper.startPage(vo.getPage(),vo.getSize());

}

//自己发布的或者下发单位中含有当前登入人单位编码的才能看

List> bureauNoticeList = bureauNoticeMapper.getList(vo,AuthHelper.loginUser().getUnitDeptCode());

bureauNoticeList.forEach(map->{

//得到下发单位信息集合

List deptNameList = bureauNoticeAcceptService.getBureauNoticeAcceptAndDeptByNoticeId((String) map.get("id"));

map.put("deptNameList",deptNameList);

//得到附件信息集合

map.put("fileList",this.getFileList((String) map.get("id")));

});

//将需要进行分页的list传入Pagehelper实现分页

PageInfo> pageInfo = new PageInfo(bureauNoticeList);

return pageInfo;

}

4.查询类Vo:

@ApiModel("")

@Getter

@Setter

public class BureauNoticeVo extends BaseVo {

@ApiModelProperty(value = "开始时间")

private String startDate;

@ApiModelProperty(value = "开始时间")

private String endDate;

@ApiModelProperty(value = "描述")

private String noticeDescription;

@ApiModelProperty(value = "页码")

private Integer page;

@ApiModelProperty(value = "页显示数")

private Integer size;

}

5.接口返回数据:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:elasticsearch元数据构建metadata及routing类源码分析(Elasticsearch-datatran)
下一篇:Java实现动态验证码生成(java实现图形验证码)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~