好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

使用PageHelper插件实现Service层分页

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

使用场景:

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

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

?

1

2

3

4

5

6

<!--pagehelper分页插件-->

< dependency >

    < groupId >com.github.pagehelper</ groupId >

    < artifactId >pagehelper</ artifactId >

    < version >4.1.6</ version >

</ dependency >

2.编写PageHelper配置类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

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 分页配置对象

  * @Date 14:47 2021/4/23

  * @Param

  * @return

  **/

@Configuration

public class PageHelperConfiguration {

     /**

     * @Author Zhongks

     * @Description //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层进行分页操作:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

/**

      * @Author Zhongks

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

      * @Date 18:42 2021/4/22

      * @Param []

      * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>

      **/

    public PageInfo<Map<String, Object>> getList(BureauNoticeVo vo){

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

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

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

        }

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

        List<Map<String, Object>> bureauNoticeList = bureauNoticeMapper.getList(vo,AuthHelper.loginUser().getUnitDeptCode());

        bureauNoticeList.forEach(map->{

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

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

            map.put( "deptNameList" ,deptNameList);

            //得到附件信息集合

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

        });

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

        PageInfo<Map<String, Object>> pageInfo = new PageInfo(bureauNoticeList);

        return pageInfo;

    }

4.查询类Vo:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

@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.接口返回数据:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:https://blog.csdn.net/weixin_44009447/article/details/116059426

查看更多关于使用PageHelper插件实现Service层分页的详细内容...

  阅读:22次