• 解决mybatis-plus不能俩表联查分页之手动写分页


    public class MyPageHelper {
    
        // 调用pageInfo插件内的方法 开启分页 需要传入一个起始页的值和每页显示的条数
        public static void startPage(PageRequest pageRequest) {
            PageHelper.startPage(pageRequest.getPageNum(),pageRequest.getPageSize());
        }
    
        // 封装结果集
        public static PageResult getPageResult(List content) {
            // 创建分页对象 将结果传入对象中 pageInfo对象中生成信息
            PageInfo pageInfo = new PageInfo<>(content);
            // 创建返回的对象
            PageResult pageResult = new PageResult();
            // 获取总页数
            pageResult.setTotal(pageInfo.getTotal());
            // 获取结果
            pageResult.setContent(pageInfo.getList());
            // 获取总页数
            pageResult.setPages(pageInfo.getPages());
            // 获取起始页数
            pageResult.setPageNum(pageInfo.getPageNum());
            // 获取每页显示的条数
            pageResult.setPageSize(pageInfo.getPageSize());
            // 返回结果
            return pageResult;
        }
    
    }
    

    public class PageRequest {
    
        /**
         *页数
         */
        private int pageNum;
        /**
         * 每页的信息的个数
         */
        private int pageSize;
    
    
        public PageRequest() {
        }
    
        public PageRequest(int pageNum, int pageSize) {
            this.pageNum = pageNum;
            this.pageSize = pageSize;
        }
    
        /**
         * 获取
         * @return pageNum
         */
        public int getPageNum() {
            return pageNum;
        }
    
        /**
         * 设置
         * @param pageNum
         */
        public void setPageNum(int pageNum) {
            this.pageNum = pageNum;
        }
    
        /**
         * 获取
         * @return pageSize
         */
        public int getPageSize() {
            return pageSize;
        }
    
        /**
         * 设置
         * @param pageSize
         */
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
    
        public String toString() {
            return "PageRequest{pageNum = " + pageNum + ", pageSize = " + pageSize + "}";
        }
    }
    

    public class PageResult {
    
            /**
             *页数
             */
            private int pageNum;
            /**
             * 每页的信息的个数
             */
            private int pageSize;
            /**
             * 总条数
             */
            private Long total;
            /**
             * 总页数
             */
            private int pages;
            /**
             * 结果集
             */
            private List content;
    
        public PageResult() {
        }
    
        public PageResult(int pageNum, int pageSize, Long total, int pages, List content) {
            this.pageNum = pageNum;
            this.pageSize = pageSize;
            this.total = total;
            this.pages = pages;
            this.content = content;
        }
    
        /**
             * 返回结果调用的方法
             */
            public static PageResult getPageResult(List content,PageRequest pageRequest,Long total) {
                // 创建返回的对象
                PageResult pageResult = new PageResult();
                // 将分页后查询到的结果放入对象中
                pageResult.setContent(content);
                // 将起始页放入对象中
                pageResult.setPageNum(pageRequest.getPageNum());
                // 将每页显示的条数放入对象中
                pageResult.setPageSize(pageRequest.getPageSize());
                // 将总条数放入对象中
                pageResult.setTotal(total);
                // 返回结果
                return pageResult;
            }
    
    
        /**
         * 获取
         * @return pageNum
         */
        public int getPageNum() {
            return pageNum;
        }
    
        /**
         * 设置
         * @param pageNum
         */
        public void setPageNum(int pageNum) {
            this.pageNum = pageNum;
        }
    
        /**
         * 获取
         * @return pageSize
         */
        public int getPageSize() {
            return pageSize;
        }
    
        /**
         * 设置
         * @param pageSize
         */
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
    
        /**
         * 获取
         * @return total
         */
        public Long getTotal() {
            return total;
        }
    
        /**
         * 设置
         * @param total
         */
        public void setTotal(Long total) {
            this.total = total;
        }
    
        /**
         * 获取
         * @return pages
         */
        public int getPages() {
            return pages;
        }
    
        /**
         * 设置
         * @param pages
         */
        public void setPages(int pages) {
            this.pages = pages;
        }
    
        /**
         * 获取
         * @return content
         */
        public List getContent() {
            return content;
        }
    
        /**
         * 设置
         * @param content
         */
        public void setContent(List content) {
            this.content = content;
        }
    
        public String toString() {
            return "PageResult{pageNum = " + pageNum + ", pageSize = " + pageSize + ", total = " + total + ", pages = " + pages + ", content = " + content + "}";
        }
    }
    

     

     三个实体类写完了后,接下来就是mapper层的编写


    @Mapper
    public interface StudentDao extends BaseMapper {
    
    
    List selectAllChd(PageRequest pageRequest);
    
    
    }

     service的编写与实现类的编写


    public interface StudentService  extends IService {
    
        List selectAllChd(PageRequest pageRequest);
    
    }
    

    @Service
    public class StudentServiceImpl extends ServiceImpl implements StudentService  {
    
        @Resource
        StudentDao studentDao;
    
        @Override
        public List selectAllChd(PageRequest pageRequest) {
            return studentDao.selectAllChd(pageRequest);
        }
    }
    

     


     再接着是controller的编写


    @GetMapping("/query")
    @ResponseBody
    public PageResult queryList() {//分页写出来了
    
        System.out.println("进来了query");
    
        PageRequest pageRequest=new PageRequest(1,3);
    
        int pageNum = pageRequest.getPageNum();
    
        pageRequest.setPageNum((pageRequest.getPageSize()*(pageRequest.getPageNum()-1)));
    
        List carManagerEntityList =studentService.selectAllChd(pageRequest);
    
        pageRequest.setPageNum(pageNum);
    
        Long total = studentService.count();
    
        return PageResult.getPageResult(carManagerEntityList,pageRequest,total);
    }
    

    mybatis-plus虽然使用起来方便,但是俩表映射就不能使用自带的分页了,所以需要小伙伴自己手动写,下面是映射语句


    
        
        
        
        
    
    
    
        
        
    
    
    

     


    项目结构如下



    查询效果如下,分页成功,并且俩表映射成功,希望可以帮助到各位小伙伴


  • 相关阅读:
    C++异步调用方法
    【ICer的脚本练习】脚本使用的思维培养 —— 用例回归
    GraalVM安装
    【Linux】:共享内存
    SVM(上):如何用一根棍子将蓝红两色球分开?
    炙手可热的ZNS SSD将会为数据中心带来什么?
    Context
    92.Linux的僵死进程以及处理方法
    Elasticsearch:如何在 Elastic Agents 中配置 Beats 来采集定制日志
    C++基础知识(上)
  • 原文地址:https://blog.csdn.net/weixin_69218754/article/details/132919551