首先实现分页查询很简单 ,这里的前提是你是用制动生成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);
就是这一句即可,后面自动实现,注意点:
分页查询仅仅对第一条有效,即:
![](https://i-blog.csdnimg.cn/blog_migrate/17f5c018828cba72c990f777cb166090.png)
所以我们的解决方法就是 分页设置 和 查询代码紧贴一起:
例:
查看总条数和总页数【有基础的一下看得懂】:
封装分页请求类
请求的时候给你参数 指定查询那页 查询多少条 ,:
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;
}
}
里面的转换部分 完全可以用 “ 工具类! ” 之前说过的 这里没用 是因为照顾一下 读者
控制器代码:
测试: