Mybatis分页插件及其使用

springboot2.x集成了MyBatis的分页插件,并做为一个场景启动器pagehelper-spring-boot-starter.

在pom.xml中引入依赖:

 <dependency> 
         <groupId>com.github.pagehelper</groupId> 
         <artifactId>pagehelper-spring-boot-starter</artifactId> 
         <version>1.2.10</version> 
    </dependency>

在application.yaml中配置

   pagehelper:
      helper-dialect: mysql
      reasonable: true
      page-size-zero: true

1、reasonable:分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页,pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。
2、helper-dialect:分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置该属性来指定分页插件使用哪种方言。如:mysql、oracle。
3、page-size-zero:默认值为 false,当该参数设置为 true 时,如果 pageSize=0 或者 RowBounds.limit = 0 就会查询出全部的结果。

service:

    @Service
    public class NoticeServiceImpl implements NoticeService {
        @Autowired(required = false)
        private NoticeMapper noticeMapper;
        @Override
        public PageInfo<Notice> queryByPage(Integer pageNo, Integer pageSize) {
            //设置分页条件,则下一个执行的sql语句就会被分页.只对其后的第一个查询有效。
            PageHelper.startPage(pageNo,pageSize);
            List<Notice> notices =noticeMapper.selectByExample(null);
            //将查询结果打包成一个PageInfo
            PageInfo<Notice> pageInfo = new PageInfo<>(notices);
            return pageInfo;
        }
    }

controller:

 @Controller
    public class NoticeController {
        @Autowired
        private NoticeService noticeService;
        /**
         * @param pageNo 当前页码
         * @param pageSize  每页大小
         * @param model
         * @return
         */
        @RequestMapping("/notice-list")
        public String toNoticeList(@RequestParam(defaultValue = "1")Integer pageNo, @RequestParam(defaultValue = "8")Integer pageSize, Model model){
            PageInfo<Notice> pageInfo = noticeService.queryByPage(pageNo, pageSize);
            //总页数
            int totalPage = pageInfo.getPages();
            //设置页面中分页的开始页码标记startPage、结束页码标记endPage
            // ---------------------------------------------------------------------
            int startPage = 1;
            int endPage =   totalPage;
             //若共有10页  1 2 3 4 5 6 7 8 9 10   
    		//分页条只会显示5页。 
    		//则分为3个段: 1 2 3/8 9 10/其它
            if(totalPage>5) {
                if((pageNo-2)<=1) {
                    startPage=1;
                    endPage = 5;
                }else if((pageNo+2)>=totalPage) {
                    endPage = totalPage;
                    startPage = endPage-4;
                }else {
                    startPage = pageNo - 2;
                    endPage = pageNo + 2;
                }
            }
            List<Integer> pageBtns = new ArrayList<>();
            for(;startPage<=endPage;startPage++){
                pageBtns.add(startPage);
            }
            //--------------------------------------------------------------------------
            model.addAttribute("pageInfo",pageInfo);
            model.addAttribute("pageBtns",pageBtns);
            return "notice-list";
        }
    }

templates/notice-list.html分页条(thymeleaf模板)
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值