首先实现分页查询很简单 ,这里的前提是你是用制动生成mybatis插件写的mybatis:
1.导入分页gav:
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.13</version> </dependency>
然后你直接在service 上 查询写即可:
//模糊查询 public List<Ebook> selectAll(EbookReq req){ //分页查询 PageHelper.startPage(1,3); EbookExample ebookExample = new EbookExample(); EbookExample.Criteria criteria = ebookExample.createCriteria(); //动态SQL 参数不为空那就模糊查询了 为空就查询全部 if(!ObjectUtils.isEmpty(req.getName())){ criteria.andNameLike("%" + req.getName()+ "%"); } List<Ebook> list = ebookMapper.selectByExample(ebookExample); return list; }
PageHelper.startPage(1,3);
就是这一句即可,后面自动实现,注意点:
分页查询仅仅对第一条有效,即:
所以我们的解决方法就是 分页设置 和 查询代码紧贴一起:
例:
查看总条数和总页数【有基础的一下看得懂】:
封装分页请求类
请求的时候给你参数 指定查询那页 查询多少条 ,:
1.新建Pagereq类 字段名什么的
2.让要实现查询的功能 “继承” 改类 !
那么这样的话 就可以实现直接携带?page=x&size=y 了。。。。。原理很简单 自己想
3.使用:
继承,然后直接在service 设置一下:
然后测试:
封装返回数据
1.新建PageResp类
那么设计这个类:

package com.bihu.study.Service; import com.bihu.study.Bean.Ebook; import com.bihu.study.Bean.EbookExample; import com.bihu.study.Mapper.EbookMapper; import com.bihu.study.Req.EbookReq; import com.bihu.study.Resp.CommonResp; import com.bihu.study.Resp.EbookResp; import com.bihu.study.Resp.PageResp; import com.bihu.study.aspect.LogAspect; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @Service public class EbookService { private final static Logger LOG = LoggerFactory.getLogger(LogAspect.class); //Dao @Resource private EbookMapper ebookMapper; //模糊查询 public PageResp<EbookResp> selectAll(EbookReq req) { EbookExample ebookExample = new EbookExample(); EbookExample.Criteria criteria = ebookExample.createCriteria(); //动态SQL 参数不为空那就模糊查询了 为空就查询全部 if (!ObjectUtils.isEmpty(req.getName())) { criteria.andNameLike("%" + req.getName() + "%"); } //分页查询 PageHelper.startPage(req.getPage(), req.getSize()); List<Ebook> ebookList = ebookMapper.selectByExample(ebookExample); //INFO PageInfo pageInfo = new PageInfo(ebookList); long total = pageInfo.getTotal(); int pages = pageInfo.getPages(); LOG.info("total:{}", total); LOG.info("pages:{}", pages); //转换 List<EbookResp> ebookRespList = new ArrayList<>(); for (Ebook item : ebookList) { EbookResp ebookResp = new EbookResp(); BeanUtils.copyProperties(item,ebookResp); ebookRespList.add(ebookResp); } PageResp<EbookResp> pageResp = new PageResp<>(); //设置条数 pageResp.setTotal(pageInfo.getTotal()); //设置值 pageResp.setList(ebookRespList); return pageResp; } //查询全部 public CommonResp<List<Ebook>> findAll() { //获取全部数据 list<ebook> List<Ebook> list = ebookMapper.selectByExample(null); CommonResp<List<Ebook>> resp = new CommonResp<>(); //设置返回的内容 resp.setContent(list); return resp; } }
里面的转换部分 完全可以用 “ 工具类! ” 之前说过的 这里没用 是因为照顾一下 读者
控制器代码:
测试: