技术标签: SpringBoot springboot
currentPage
pageSize
List
totalCount
<template>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[5, 10, 15, 20]"
:page-size="5"
layout="total, sizes, prev, pager, next, jumper"
:total="totalCount">
</el-pagination>
</template>
<script>
export default {
methods: {
handleSizeChange(val) {
//console.log(`每页 ${val} 条`);
// 重新设置每页显示的条数
this.pageSize = val;
this.selectAll();
},
handleCurrentChange(val) {
// console.log(`当前页: ${val}`);
// 重新设置当前页码
this.currentPage = val;
this.selectAll();
}
},
data() {
return {
// 当前页码
currentPage: 1,
// 总记录数
totalCount: 100,
// 每页显示条数
pageSize: 5,
//接收当前页数据集合
tableData:[]
};
},
methods:{
// 分页查询
selectAll(){
axios({
method:"get",
url:'后端接口地址',
}).then(response => {
//设置表格数据
this.tableData = response.data.rows;
//设置总记录数
this.totalCount = response.data.totalCount
})
}
}
}
</script>
// 分页查询JavaBean
public class PageBean<T> {
// 总记录数
private int totalCount;
// 当前页数据
private List<T> rows;
get,set...
}
// 分页查询
@Select("select * from 表名 limit #{begin} , #{size}")
List<T> selectByPage(@Param("begin") int begin,@Param("size") int size);
// 查询总记录数
@Select("select count(*) from 表名")
int selectTotalCount();
// 分页查询 currentPage:当前页码 pageSize:每页展示条数
PageBean<T> selectByPage(int currentPage,int pageSize);
@Override
public PageBean<T> selectByPage(int currentPage,int pageSize){
// 计算开始索引
int begin = (currentPage - 1) * pageSize;
// 计算查询条目数
int size = pageSize;
// 查询当前页数据
List<T> rows = mapper.selectByPage(begin,size);
// 查询总记录数
int totalCount = mapper.selectTotalCount();
// 封装PageBean对象
PageBean<T> pageBean = new PageBean<>();
pageBean.setRows(rows);
pageBean.setTotalCount(totalCount);
return pageBean;
}
@GetMapping("/selectAll")
public AjaxResult getApproveDataRes(ImportDataGetDto importDataGetDto){
//接收前段传递请求参数实体importDataGetDto
int currentPage = importDataGetDto.getCurrentPage();
int pageSize = importDataGetDto.getPageSize();
PageBean<T> pageBean = mapper.selectByPage(currentPage,pageSize)
return pageBean;
}
<dependencies>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
pagehelper:
# 设置方言,此处指定 MySQL 数据库
helper-dialect: mysql
# 是否启动合理化,默认是 false。
# 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages(最大页数)会查询最后一页。
# 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据
reasonable: true
# 是否支持接口参数来传递分页参数,默认false
support-methods-arguments: true
# 为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值
params: count=countSql
# 默认值为 false,当该参数设置为 true 时,如果 pageSize=0 或者 RowBounds.limit = 0 就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是 Page 类型)
page-size-zero: true
/**
* service实现类
* @param pageNumber 页码
* @param pageSize 每页显示数目
*/
public PageInfo<T> list(Integer pageNumber, Integer pageSize) {
// 设置分页
PageHelper.startPage(pageNumber, pageSize);
// 查询用户角色列表(需要分页的查询)
List<T> list = userRoleService.queryList();
PageInfo<T> pageInfo = new PageInfo<>(list);
return pageInfo;
)
注意:PageHelper.startPage(页码, 每页显示数目); 这一句代码,必须放在需要分页的查询语句之前,否则会分页不生效
分页设置与需要分页的查询之间存在其他查询,如下代码是一个错误示范,虽然在方法的开头设置了分页,但因为在
【查询用户角色列表】
之前,多查了一步【查询用户信息】
,此时实际上分页针对的是【查询用户信息】进行分页,而并非对【查询用户角色列表】进行分页。
public PageInfo<UserRole> list(Integer pageNumber, Integer pageSize, String userId) {
// 设置分页
PageHelper.startPage(pageNumber, pageSize);
// 查询用户信息
User user = userService.findById(userId);
// 查询用户角色列表(需要分页的查询)
List<UserRole> list = userRoleService.queryList();
PageInfo<UserRole> pageInfo = new PageInfo<UserRole>(list);
return pageInfo;
)
注意:startPage会寻找最近的一个查询方法执行分页
在需要分页的查询后才设置分页,如下代码是一个错误示范,在【查询用户角色列表】后才进行分页设置,因为已进行的所有数据的查询,所以此时再设置分页已无任何意义,自然会分页失效
public PageInfo<UserRole> list(Integer pageNumber, Integer pageSize) {
// 查询用户角色列表(需要分页的查询)
List<UserRole> list = userRoleService.queryList();
// 设置分页
PageHelper.startPage(pageNumber, pageSize);
PageInfo<UserRole> pageInfo = new PageInfo<UserRole>(list);
return pageInfo;
)
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集重要,通过getList获取结果集
private List<T> list;
//前一页
private int prePage;
//下一页
private int nextPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
//导航条上的第一页
private int navigateFirstPage;
//导航条上的最后一页
private int navigateLastPage;
//使用默认分页时
PageHelper.startPage(page, size);
List<DataBean> beans = mapper.selectByQuery(express);
return new PageInfo<>(beans);
根据上述代码可以发现,想要进行自定义分页的话,只需要重新定义一个
PageInfo
就可以了。保留当前页、每页数量、当前页数量、总记录数、总页数字段,其他参数全部干掉,拷贝下PageInfo,在实体目录下新建个PageBean
,把PageInfo源码丢进去,删掉多余的参数就OK了
public class PageBean<T> {
private static final long serialVersionUID = 1L;
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List<T> list;
get,set...
}
然后分页代码把PageInfo改成自己的PageBean
PageHelper.startPage(page, size);
List<DataBean> beans = mapper.selectByQuery(express);
return new PageBean<>(beans);
PagedListHolder
是Spring Framework
中的一个分页辅助类
,用于对列表进行分页显示和管理。它可以将一个列表对象进行分页处理,并提供了一些方法,用于管理分页的相关信息。使用PagedListHolder可以方便地对列表进行分页处理,包括获取当前页的数据、切换到下一页或上一页、设置每页显示的记录数
等操作。它还提供了一些其他的方法,如获取总页数、获取当前页码
等。
<template>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[5, 10, 15, 20]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalCount">
</el-pagination>
</template>
<script>
export default {
methods: {
handleSizeChange(val) {
//console.log(`每页 ${val} 条`);
// 重新设置每页显示的条数
this.pageSize = val;
this.selectAll();
},
handleCurrentChange(val) {
// console.log(`当前页: ${val}`);
// 重新设置当前页码
this.currentPage = val;
this.selectAll();
}
},
data() {
return {
// 当前页码
currentPage: 1,
// 总记录数
totalCount: 0,
// 每页显示条数
pageSize: 5,
//接收当前页数据集合
tableData:[]
};
},
methods:{
/*
分页查询
*/
handleSizeChange(val) {
console.log(`每页 ${
val} 条`);
// 重新设置每页显示的条数
this.pageSize = val;
this.selectAll();
},
handleCurrentChange(val) {
console.log(`当前页: ${
val}`);
// 重新设置当前页码
this.currentPage = val;
this.selectAll();
},
// 分页查询
selectAll(){
axios({
method:"get",
url:'后端接口地址',
}).then(response => {
//设置表格数据
this.tableData = response.data.rows;
//设置总记录数
this.totalCount = response.data.total
})
}
}
}
</script>
dto实体
@Data
public class ApproveGetDto {
...
// 当前页码
private Integer currentPage;
// 每页展示条数
private Integer pageSize;
}
vo实体
@Data
public class ApproveGetRes<T> {
...
//分页查询:总记录数
private Long total;
//分页查询:当前页数据
private T rows;
}
controller
@GetMapping("/getApproveDataRes")
public AjaxResult getApproveDataRes(ApproveGetDto approveGetDto ){
// 通过前端传递参数调用service获取数据
List<ApproveGetRes> approveGetRes= lsjsService.getApproveDataRes(approveGetDto);
// 设置要进行分页处理的数据源
PagedListHolder<ApproveGetRes> plh = new PagedListHolder<>(approveGetRes);
// 设置每页显示的记录数
plh.setPageSize(approveGetDto.getPageSize());
// 设置当前显示的页码,0代表第一页
plh.setPage(approveGetDto.getCurrentPage()-1);
// 创建vo对象
ApproveGetRes dataRes = new ApproveGetRes();
// 设置vo对象的总条数
dataRes.setTotal(Long.valueOf(approveDataRes.size()));
// plh.getPageList():获取当前页的数据列表
dataRes.setRows(plh.getPageList());
return AjaxResult.success("返回成功", dataRes);
}
方法解释
// 1. 设置要进行分页处理的源列表
List<ApproveGetRes> approveGetRes= lsjsService.getApproveDataRes(approveGetDto);
PagedListHolder<ApproveGetRes> pagedListHolder = new PagedListHolder<>(approveGetRes);
// 2. 设置每页显示的记录数
pagedListHolder.setPageSize(2);
// 3. 设置当前显示的页码
pagedListHolder.setPage(0);
// 4. 获取当前页的数据列表
List<String> currentPageData = pagedListHolder.getPageList();
// 5. 切换到下一页
pagedListHolder.nextPage();
// 6. 切换到上一页
pagedListHolder.previousPage();
// 7. 获取总页数
int totalPages = pagedListHolder.getPageCount();
// 8. 获取当前页码
int currentPage = pagedListHolder.getPage();
// 9. 判断当前页是否为第一页
boolean isFirstPage = pagedListHolder.isFirstPage();
// 10. 判断当前页是否为最后一页
boolean isLastPage = pagedListHolder.isLastPage();
文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib
文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang
文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些
文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器
文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距
文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器
文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn
文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios
文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql
文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...
文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120
文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数