解决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<Student> {List<Student> selectAllChd(PageRequest pageRequest);}

 service的编写与实现类的编写


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

@Service
public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> implements StudentService  {@ResourceStudentDao studentDao;@Overridepublic List<Student> 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<Student> carManagerEntityList =studentService.selectAllChd(pageRequest);pageRequest.setPageNum(pageNum);Long total = studentService.count();return PageResult.getPageResult(carManagerEntityList,pageRequest,total);
}

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


<resultMap type="com.cskt.entity.Student" id="StudentMap"><result property="sId" column="s_id" jdbcType="INTEGER"/><result property="sName" column="s_name" jdbcType="VARCHAR"/><result property="sSex" column="s_sex" jdbcType="VARCHAR"/><association property="sClass" resultMap="ClassMap"></association>
</resultMap><resultMap id="ClassMap" type="com.cskt.entity.StuClass"><id property="cId" column="c_id"></id><result property="cName" column="c_name"></result>
</resultMap><select id="selectAllChd" resultMap="StudentMap">SELECT * FROM `student` as stu  join stu_class    as sts  on  stu.s_class=sts.c_id   limit #{pageNum} ,#{pageSize}
</select>

 


项目结构如下



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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/80251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CMU15-445 Part-11】Join Algorithms

Part11-Join Algorithms Why Do We Need to Join? Join其实是关系数据库和范式化表时候所产生的副产物。 也就是说我们范式化表是为了减少冗余信息&#xff0c;而我们使用join就是为了去重建reconstruct 这些原本的tuple Join Algorithms 主要关注两表的inner equijoin a…

01_网络编程_传统IO

网络编程 1.什么是网络编程 在网络通信协议下&#xff0c;不同计算机上运行的程序&#xff0c;进行的数据传输。 如果想把一个计算的结果&#xff0c;或者是电脑上的文件通过网络传递给你的朋友&#xff0c;就需要用到网络编程。 在实际生活中&#xff0c;网络通信无处不在…

Windows 10 Enterprise LTSC 2021 (x86) - DVD (Chinese-Simplified)文件分享

Windows 10 Enterprise LTSC 2021 (x64) - DVD (Chinese-Simplified) SW_DVD9_WIN_ENT_LTSC_2021_64BIT_ChnSimp_MLF_X22-84402.ISO 镜像文件&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/2f8f61ec4a98 Windows 10 Enterprise LTSC 2021 (x86) - DVD (Chinese-Simpli…

python selenium 爬虫教程

Python和Selenium是很强大的爬虫工具&#xff0c;可以用于自动化地模拟浏览器行为&#xff0c;从网页中提取数据。下面是一个简单的使用Python和Selenium进行爬虫的案例。 入门&#xff1a; 1. 安装和配置&#xff1a; 首先&#xff0c;你需要安装Python和Selenium。可以使用…

Postman的高级用法一:重新认识postman核心模块

本请求示例来自于免费天气API&#xff1a; 实况天气接口API开发指南 未来一天天气预报api - 天气API 关于Postman的核心模块 全局变量请求接口请求体预处理脚本 类似beforeTest&#xff0c;在发起请求前的预执行逻辑&#xff0c;通常是生成一些动态变量值 测试用例模块 测试者…

开源社区赋能,Walrus 用户体验再升级

基于平台工程理念的应用管理平台 Walrus 已于上月正式开源&#xff0c;目前在 GitHub 已收获 177 颗星&#x1f31f; Walrus 希望打造简洁清爽的应用部署与管理体验&#xff0c;帮助研发与运维团队减少“内耗”工作&#xff0c;提升开发体验。 我们十分重视 Walrus 用户的…

Ubuntu安装深度学习环境相关(yolov8-python部署)

Ubuntu安装深度学习环境相关(yolov8-python部署) 本文将从如下几个方面总结相关的工作过程&#xff1a; Ubuntu系统安装(联想小新pro16) 2.显卡驱动安装3.测试深度学习模型 1. Ubunut 系统安装 之前在台式机上安装过Ubuntu&#xff0c;以为再在笔记本上安装会是小菜一碟&…

查询IP地址可得到哪些信息

通过IP地址定位&#xff0c;可以获取一些基本的信息&#xff0c;包括以下内容&#xff1a; 1. 地理位置&#xff1a;你可以确定IP地址所在的地理位置&#xff0c;包括国家、州或省、城市和地理坐标。这通常是通过将IP地址与地理位置数据库进行匹配来实现的。 2. ISP&#xff…

JDK13特性

文章目录 JAVA13概述语法层面特性switch表达式(预览)文本块(预览) API层次特性重新实现旧版套接字API 其他变化ZGC取消未使用的内存增加废弃和移除增加项移除项废弃项 JAVA13概述 2019年9月17日&#xff0c;国际知名的OpenJDK开源社区发布了Java编程语言环境的最新版本OpenJDK…

【资源监视器】设备占用,强制弹出移动硬盘

设备占用&#xff0c;强制弹出移动硬盘 任务管理器中找到资源监视器 资源监视器&#xff1a;找到CPU 输入磁盘&#xff1a;如H: , 点击旁边的刷新 结束句柄 右键

简单工厂模式 和 工厂方法 和 抽象工厂的区别

简单工厂模式、工厂方法模式和抽象工厂模式是三种不同的创建型设计模式&#xff0c;它们在对象的创建和封装方面有不同的用途和实现方式。以下是它们之间的主要区别&#xff1a; 1. **简单工厂模式&#xff08;Simple Factory Pattern&#xff09;**&#xff1a; - **目的**&a…

二十一、MySQL(多表)内连接、外连接、自连接实现

1、多表查询 &#xff08;1&#xff09;基础概念&#xff1a; &#xff08;2&#xff09;多表查询的分类&#xff1a; 2、内连接 &#xff08;1&#xff09;基础概念&#xff1a; &#xff08;2&#xff09;隐式内连接&#xff1a; 基础语法&#xff1a; select 表1.name,…

私域流量的优势

私域流量是指由自身品牌或个人拥有并具备完全掌控权的流量资源。它相比于传统的广告推广&#xff0c;拥有独特的优势。 首先&#xff0c;私域流量能够更加精准地定位目标用户&#xff0c;实现精准传播。不再盲目投放广告&#xff0c;而是通过建立自身社群、粉丝群&#xff0c;获…

xshell---git上传文件到gitee远程仓库配置

1.git下载 如果没有xshell下没有下载过git&#xff0c;可以参考这篇的教程&#xff1a;Linux配置安装 git 详细教程 下载后可以通过 git --version 查看git的版本号&#xff0c;验证是否安装成功 2.新建仓库 首先需要在gitee上注册一个账号 然后再主页面点击右上边框的 号…

7.从句学习

目录 一、从句。 &#xff08;1&#xff09; 从句总结。 &#xff08;2&#xff09;从句类型。 &#xff08;3&#xff09;引导词&#xff08;常见的引导词&#xff09;。 &#xff08;3.1&#xff09;名词性从句&#xff1a; &#xff08;3.2&#xff09;形容词性从句&a…

Springboot 实践(17)spring boot整合Nacos配置中心

前文我们讲解了Nacos服务端的下载安装&#xff0c;本文我们降价spring boot整合nacos&#xff0c;实现Nacos服务器配置参数的访问。 一、启动Nacos服务&#xff0c;创建三个配置文件&#xff0c;如下所示 Springboot-Nacos-Client-dev.yaml文件配置参数 Springboot-Nacos-Clie…

jitsi音视频会议集成到自己的网页中

将jitsi视频会议集成到自己的web网站&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"en" xmlns:th"http://www.thymeleaf.org"> <head><meta charset"UTF-8"><meta name"viewport" content&…

算法训练 第二周

二、反转链表 本题给我们了一个单链表的头节点head&#xff0c;要求我们把这个单链表的连接顺序进行逆置&#xff0c;并返回逆置后的链表头节点。 1.头插法 我们需要先创建一个新的头节点ph&#xff0c;然后遍历给出的单链表&#xff0c;把遍历到的每一个节点用头插法接到ph的…

高德地图实现-微信小程序地图导航

效果图&#xff1a; 一、准备阶段 1、在高德开放平台注册成为开发者2、申请开发者密钥&#xff08;key&#xff09;。3、下载并解压高德地图微信小程序SDK 高德开放平台&#xff1a; 注册账号(https://lbs.amap.com/)) 申请小程序应用的 key 应用管理(https://console.ama…

Hadoop源码阅读(二):DataNode启动

说明&#xff1a; 1.Hadoop版本&#xff1a;3.1.3 2.阅读工具&#xff1a;IDEA 2023.1.2 3.源码获取&#xff1a;Index of /dist/hadoop/core/hadoop-3.1.3 (apache.org) 4.工程导入&#xff1a;下载源码之后得到 hadoop-3.1.3-src.tar.gz 压缩包&#xff0c;在当前目录打开Pow…