Java数据库学习之分页查询
分页查询 limit [start],[rows]
思路:
pram start 从哪一行开始 关键是从哪一行开始,需要根据查询的页数来进行换算出查询具体页数是从哪一行开始
start = (pages-1)*rows;
pages : 具体要查询那一页
rows : 每页查询多少行
pram rows 查询多少行
总页数需用额外的方法使用SQL语句中的count关键字来计算,并对用户输入的页数进行逻辑判断。
当用户输入页数<=0;从第一页开始 当用户输入页数>=最大页数是 从最大的页数开始
DEMO1 分页查询的主方法
public List<User> selectByPage(int startpage, int rows) {
sql = "select * from tb_user limit ?,?";
conn = DBUtil.getconn();
List<User> list = new ArrayList<>();
User user = null;
try {
PreparedStatement ps = conn.prepareStatement(sql);
int start = (startpage-1)*rows;
ps.setInt(1, start);
ps.setInt(2, rows);
ResultSet rs = ps.executeQuery();
while(rs.next()) {
user = new User(rs.getString("pass"), rs.getInt("uage"), rs.getString("uname"),
rs.getString("birthday"), rs.getBigDecimal("sal"), null);
list.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.closeResources(conn, ps, null);
}
return list;
}
DEMO2 计算可查询最大页数的方法
/**
*
* @param rows 为每次查询时需显示的行数
* @return countpages返回的是可查的最大页数
*/
@Override
public int countmaxpages(int rows) {
// 计算查询表的最大页数
int countpages = 0;
sql = "select count(*) from tb_user";
conn = DBUtil.getconn();
try {
ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();//结果集存储的是查询后的表的内容,
// 如果只查询一个字段,则查询后的返回的结果集只有一个字段
if(rs.next()) {
int lines = rs.getInt(1);
countpages = (lines%rows==0)?(lines/rows):(lines/rows+1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return countpages;
}
DEMO3 代码优化,需要对用户输入的页数进行合法性判断。
@Override
public Map<String, Object> selectByPage(int startpage, int rows) {
// 对用户输入的页数合法性进行判断
// 如果用户输入的页数<=0,或用户的输入查询的行数>总行数。则设置默认从第一页开始显示
if(startpage<=0||rows>userDao.countmaxpages(rows)) {
startpage = 1;
}
// 如果用户的输入查询的行数>最大页数(根据用户输入的查询行数和总可查询行数确定)。则设置默认从最后一页开始显示
if(startpage>userDao.countmaxpages(rows)) {
startpage = userDao.countmaxpages(rows);
}
List<User> list = new ArrayList<>();
list = userDao.selectByPage(startpage, rows);
if(list.size()==0) {
map.put("code",600);
map.put("msg","分页查询失败");
return map;
}else {
map.put("code",200);
map.put("msg","分页查询成功");
list.forEach(user1->{
System.out.println(user1);
});
return map;
}
}
Java数据库学习之分页查询的更多相关文章
- Java数据库学习之模糊查询(like )
Java数据库学习之模糊查询(like ): 第一种方式:直接在SQL语句中进行拼接,此时需要注意的是parm在SQL语句中需要用单引号拼接起来,注意前后单引号之间不能空格 String sql = ...
- .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...
- java数据库学习路线和必学知识点!
java数据库必学知识点! 分享一下数据库的学习路线和必学的知识点! 掌握mysql,Oracle在各个平台上的安装及使用 Mysql数据库基础 mysql概述.优点.运行原理及内存结构 mysql数 ...
- 基于Mysql数据库的SSM分页查询
前言: Hello,本Y又来了,"分页"在我们使用软件的过程中是一个很常见的场景,比如博客园对于每个博主的博客都进行了分页展示.可以简单清晰的展示数据,防止一下子将过多的数据展现给 ...
- 菜鸟学Java(十)——分页查询
今天继续跟大家说说一些非常基础的东西,这次我们说说分页查询.说到分页,可能很多人都听说过什么真分页.假分页的.简单解释一下,拿第二页,每页20条为例:真分:数据库里取 的就是21-40条:假分:数据库 ...
- mysql数据库封装和 分页查询
1 之前我们学到了php连接mysql数据库的增删改查,中间要多次调用数据库, 而且以后用到的表比较多,上传中如果需要改数据的话会非常麻烦,但是如果 我们把数据库封装,到时就可以很轻松的把改掉一些数据 ...
- JAVA入门[10]-mybatis分页查询
1.添加分页插件 在mybatis-generator-config.xml添加plugin节点: <plugin type="org.mybatis.generator.plugin ...
- MySQL数据库封装和分页查询
1.数据库封装 <?php //我用的数据库名是housedb class DBDA {public $host="localhost";public $uid=" ...
- Java数据库学习之SQL语句动态拼接
public class UserDaoImpl implements UserDao { @Override public List<User> getUserByPage(PageIn ...
随机推荐
- python爬虫–爬取煎蛋网妹子图片
前几天刚学了python网络编程,书里没什么实践项目,只好到网上找点东西做. 一直对爬虫很好奇,所以不妨从爬虫先入手吧. Python版本:3.6 这是我看的教程:Python - Jack -Cui ...
- Spring Boot 2.x 系列教程:WebFlux REST API 全局异常处理 Error Handling
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本文内容 为什么要全局异常处理? WebFlux REST 全 ...
- Python:bs4的使用
概述 bs4 全名 BeautifulSoup,是编写 python 爬虫常用库之一,主要用来解析 html 标签. 一.初始化 from bs4 import BeautifulSoup soup ...
- element-ui 动态换肤
1.在安装好 element-ui@2.x 以后,首先安装sass-loader npm i sass-loader node-sass -D 2.安装 element-theme npm i ele ...
- 105 - kube-scheduler源码分析 - predicate算法注册
一.predicate注册过程 今天我们来聊聊predicate函数是怎么被注册进去的,也就是要执行的一堆predicate是怎么成为“选中的孩子”. 代码位置:pkg/scheduler/fact ...
- 使用strace命令跟踪系统调用
一.是什么strace? strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由 ...
- 浅谈Google Chrome浏览器(理论篇)
注解:各位读者,经博客园工作人员反馈,hosts涉及违规问题,我暂时屏蔽了最新hosts,若已经获取最新hosts的朋友们,注意保密,不要外传.给大家带来麻烦,对此非常抱歉!!! 开篇概述 1.详解g ...
- Spring MVC深入学习
一.MVC思想 MVC思想简介: MVC并不是java所特有的设计思想,也不是Web应用所特有的思想,它是所有面向对象程序设计语言都应该遵守的规范:MVC思想将一个应用部分分成三个基本部 ...
- react 脚手架 立即可以写业务 react + react-router-dom + less + axios + antd
https://github.com/cynthiawupore/wq-cli
- js函数式编程术语总结 - 持续更新
参考文档1 参考文档2 函数式编程术语 高阶函数 Higher-Order Functions 以函数为参数的函数 返回一个函数的函数 函数的元 Arity 比如,一个带有两个参数的函数被称为二元函数 ...