SB mybatis 实现分页查询以及 分页查询请求和返回的封装

首先实现分页查询很简单 ,这里的前提是你是用制动生成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;
    }

}
 Service.java

里面的转换部分 完全可以用      “  工具类!    ”  之前说过的  这里没用 是因为照顾一下 读者

控制器代码:

测试:

本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/15398276.html

原文地址:https://www.cnblogs.com/bi-hu/p/15398276.html