• 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

  • 相关阅读:
    Orcle 导入数据eurusd.ctl
    Maven系列2pom.xml 配置详解
    UML关联&泛化的区别
    maven 创建工程
    maven 打包
    jprofiler安装和配置
    设计模式出现之前的几大原则
    检查启动情况linux
    领域模型
    解压命令tar
  • 原文地址:https://www.cnblogs.com/bi-hu/p/15398276.html
Copyright © 2020-2023  润新知