jdbcTemplate 后台接口中的分页
Springboot+jdbcTemplate 对查询结果列表做分页,
之前开发的小项目,数据逐渐增多,每次返回所有的查询结果,耗费性能和时间
想到做分页。 于是从简单的分页做起。 jdbcTemplate中实现分页。
新增一个页面对象, 分页需要知道当前是第几页,每页多少条数, 一共有多少页。查询显示的列表信息。 更多的还有数据排序,按照哪一个字段进行、或者哪几个字段进行 升序或者降序的排列。
PageList页面对象
package com.example.demo.utils; import java.util.ArrayList;
import java.util.List; /**
* 封装分页对象
**/
public class PageList {
private int page; //当前页
private int totalRows; //总行数
private int pages; //总页数
private List list=new ArrayList(); public int getPage() {
return page;
} public void setPage(int page) {
this.page = page;
} public int getPages() {
return pages;
} public void setPages(int pages) {
this.pages = pages;
} public List getList() {
if(list==null){
list=new ArrayList();
}
return list;
} public void setList(List list) {
this.list = list;
} public int getTotalRows() {
return totalRows;
} public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
}
其他就是在controller中添加
@GetMapping("/findAllbyPager")
@ResponseBody
public PageList findAllbyPager(int pagenum, int pagerow) {
PageList pageList = new PageList();
if(pagenum == 0){pagenum=1;}
if(pagerow == 0){pagenum=30;}
List<User> list= userService.findAllbyPage(pagenum, pagerow );
int TotalRows = userService.countAll();
pageList.setPage(pagenum);
pageList.setTotalRows(TotalRows);
int pages= 0; if(TotalRows % pagerow == 0){ pages = TotalRows / pagerow;}
else { pages = TotalRows / pagerow +1 ;}
System.out.println("目前分页的总页数是"+pages);
pageList.setPages(pages); pageList.setList(list);
return pageList;
}
int类型,没有传入值的时候,做的处理;
第几页,每页的行数,是传进来的数据,
拼接到sql中进行查询的时候,用limit做限制,比如下面的
@Override
public List<User> findAllbyPage(int pagenum, int pagerow) {
int starter = (pagenum-1)*pagerow;
String sql = "select id, name, age from user order by id asc limit " + starter +" , "+ pagerow;
List<User> list = jdbcTemplate.query(sql,new UserRowMapper()); return list;
}
【需要注意limit后面有空格, pagenum 和 pagerow 之间除了有逗号外,还有空格】
pagenum需要设置一下,最好新增一个starter表示从第几行开始
第一页从1开始
第二页从 (2-1)*pageROW 开始, 我这边省略
select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。
select * from tablename limit 0,5
即取出第1条至第5条,5条记录
select * from tablename limit 5,5
即取出第6条至第10条,5条记录
查询结果:
请求的内容:
GET http://localhost:8080/findAllbyPager?pagenum=5&pagerow=2
返回的结果:
更详细的的信息,比如如何获取总条数,请看下面的github中代码
https://github.com/JasmineQian/SpringDemo_2019/tree/master/jdbcTemplate2page
jdbcTemplate 后台接口中的分页的更多相关文章
- 在vue-cli搭建的项目中在后台mock接口中支持req.body和req.cookies
在<vue-cli搭建的项目中增加后台mock接口>中实现了后台mock,但是前端post的t数据都要在mock的后台接口中使用req的接收数据事件获取http协议body中的数据. re ...
- 前后端通信中使用Ajax与后台接口api交互(以登录功能为例)
一.查阅开发文档 首先,要做这个功能前,我们必须先查阅后台接口文档,了解使用登录接口时,需要提交哪些参数,并且接口使用返回的数据. 这里我使用了一个返回json格式数据的登录接口为例,讲解怎么使用Aj ...
- [数据库]Oracle和mysql中的分页总结
Mysql中的分页 物理分页 •在sql查询时,从数据库只检索分页需要的数据 •通常不同的数据库有着不同的物理分页语句 •mysql物理分页,采用limit关键字 •例如:检索11-20条 selec ...
- thinkjs学习-this.assign传递数据和ajax调用后台接口
在页面加载时,就需要显示在页面上的数据,可以在后台使用this.assign赋值,在前台通过ejs等模板获取:用户点击按钮,或者触发某些事件和后台进行交互时,就需要用到ajax调用后台接口.本文通过一 ...
- 我的第一个python web开发框架(39)——后台接口权限访问控制处理
前面的菜单.部门.职位与管理员管理功能完成后,接下来要处理的是将它们关联起来,根据职位管理中选定的权限控制菜单显示以及页面数据的访问和操作. 那么要怎么改造呢?我们可以通过用户的操作步骤来一步步进行处 ...
- 通过使用Web Workers,Web应用程序可以在独立于主线程的后台线程中,运行一个脚本操作。这样做的好处是可以在独立线程中执行费时的处理任务,从而允许主线程(通常是UI线程)不会因此被阻塞/放慢。
Web Workers API - Web API 接口参考 | MDNhttps://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API ...
- Swagger结合mustache模板生成后台接口代码、以及前后台建模代码
之前项目中使用的的thrift来建模,维护前后台模型以及rest接口,前台使用的是angular2: 但是使用thrift只能生成建模,后台的rest接口的Controller文件还是需要手动去写,一 ...
- node作为中间层 —> 跨域请求java后台接口(使用http-proxy-middleware中间件)
情景:利用node的express 作为中间层,跨域调取java后台接口,由于java接口对session有判断,因此每次请求都必须在req的headers中需要带上cookie,否则接口报500错误 ...
- fetch 代替 XMLHttpRequest (json-server 模拟后台接口)
一.fetch 是 XMLHttpRequest 的替代方案.说白了就是除了 ajax 获取后台数据之外也可以用fetch 来获取. 二.fetch 的支持性还不是很好.挂载于BOM中可以通过浏览器直 ...
随机推荐
- DNS缓存中毒的知识
网络上出现互联网漏洞——DNS缓存漏洞,此漏洞直指我们应用中互联网脆弱的安全系统,而安全性差的根源在于设计缺陷.利用该漏洞轻则可以让用户无法打开网页,重则是网络钓鱼和金融诈骗,给受害者造成巨大损失. ...
- linux系统Centos环境下搭建SVN服务器及权限配置
linux系统Centos环境下如何搭建SVN服务器以及svnserve.conf.authz.passwd配置文件详细介绍 至于svn的概念,这里就不做详细阐述了,可以自行百度.简单来讲就是一个 ...
- IE haslayout的属性及其值
haslayout是IE 渲染引擎的一个内部组成部分.在IE 中,一个元素要么自己对自身的内容进行计算大小和组织,要么依赖于父元素来计算尺寸和组织内容.为了调节这两个不同的概念,渲染引擎采用了hasl ...
- Cookie,Session,正则表达式
一.Cookie和Session基础知识 Cookie:客户端本地存储的键值对 Http访问是不记录状态的,所以要借助session和cookie来保存访问状态 当你在浏览网站的时候,WEB 服务器 ...
- java根据图片的url地址下载图片到本地
package com.daojia.haobo.aicircle.util; import sun.misc.BASE64Encoder; import java.io.*; import java ...
- 计算概论(A)/基础编程练习1(8题)/1:大象喝水
#include<stdio.h> int main() { ; // n < 100 scanf("%d", &n); // 循环遍历判断 再进行平方和 ...
- 利用crontab定时备份nginx访问日志(也可以说是定时切分日志)
在我们的工作中,肯定会涉及到分析访问日志. 但是如果访问日志都集中存在于一个文件中,那数据量就太大了,并且也不利于我们进行分析. 所以我们需要对访问日志进行按时间切割. 思路: 我们可以利用linux ...
- window bat 运行 cmd 命令
新建一个.bat批处理文件,编写以下切换目录 并且执行 ipconfig 命令: cmd /k "cd /d D:phpStudy/WWW & ipconfig" cmd ...
- socket - option编程:SO_REUSEADDR
网友vmstat多次提出了这个问题:SO_REUSEADDR有什么用处和怎么使用.而且很多网友在编写网络程序时也会遇到这个问题.所以特意写了这么一篇文章,希望能够解答一些人的疑难. 其实这个问题在Ri ...
- php 常用代码片断
参考: https://www.jianshu.com/p/f5303225ef92 http://www.phpxs.com/code/php/