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;
	}
	}

  

原文地址:https://www.cnblogs.com/klory/p/10623705.html

时间: 2024-08-02 14:38:12

Java数据库学习之分页查询的相关文章

Java学习之分页查询

Java学习之分页查询 一先做数据库的实体类 Userinfo.java <span style="font-size:14px;">package com.zhu.books.jdbc; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class Pagation extends DBCon

java数据库学习路线和必学知识点!

java数据库必学知识点!?分享一下数据库的学习路线和必学的知识点! Mysql数据库基础mysql概述.优点.运行原理及内存结构mysql数据类型mysqlDDL语句的使用SQL语言的使用DML语句的介绍及使用SQL事务SQL查询机制.查询基础.技巧.查询优化:Mysql数据库高级mysql数据库引擎分类mysql事务mysql表mysql数据类型mysql视图mysql索引mysql分页SQL语句优化技巧 Oracle实战Oracle安装与调试Oracle数据类型Oracle与MySQL对比

基于Mysql数据库的SSM分页查询

前言: Hello,本Y又来了,"分页"在我们使用软件的过程中是一个很常见的场景,比如博客园对于每个博主的博客都进行了分页展示.可以简单清晰的展示数据,防止一下子将过多的数据展现给用户,毕竟用户的阅读能力和短期接受力都有限,使用分页可以避免带给用户浏览上的不舒服感,利用它可以带给用户良好的体验,便于浏览和查询数据.那么本期我们的博客就来探讨关于分页,使用的Java的框架是Spring+Springmvc+mybatis,这也是目前企业非常流行的搭配方式,使用的数据库是Mysql,我们将

Java数据库学习之SQL语句动态拼接

public List<User> getUserByPage(PageInfo pif,User user){ List<User> lu = new ArrayList<User>(); Connection conn = DButil.getconn(); String sql = "SELECT u.uname,u.uaddr from userinfo u "; // !"".equals(user.getUname()

java数据库学习

//编写db类/* a加载驱动 驱动类要全路径 包名+类名 suround with try/catch * b设置参数url user pwd * c.连接数据库(import 'Connection' com.mysql.jdbc) 驱动管理器(DriverManager).获得链接(getConnection)利用提示输入带(url,userName,passW) * 链接不成功 检查驱动类全路径是否写对 2(添加强制转换) add cast to Connection 3(添加catch

使用JDBC连接MySQL数据库--典型案例分析(八)----实现员工数据的分页查询

转载请注明:http://blog.csdn.net/uniquewonderq 问题: 使用JDBC连接Mysql数据库,实现对Emp表数据的分页查询功能. 方案: 对于较大的数据量,通常采用分页查询的方式.不同的数据库产品有不同的数据库级的分页查询策略.例如:Oracle通常使用rownum的方式:而Mysql使用limit的方式. Oracle采用rownum和子查询实现分页查询,SQL语句如下, select * from (select rownum rn,empno,ename,jo

Java分页查询

[java] view plain copy /** * 分页查询 * @param pageNo 第几页 * @param pageSize 每页多少条数据 * @return pageModel */ public PageModel findUserList(int pageNo, int pageSize) { StringBuffer sbSql = new StringBuffer(); sbSql.append("select user_id, user_name, passwor

JAVA学习之 实现分页查询

分页是系统中常用到的功能,只要涉及到查询必定伴随而来的就是分页,之前也学习过关于分页的内容,例如在牛腩的新闻发布系统,之前学习的大部分都是使用了假分页,这次学习java,使用Oracle数据库来实现一下真分页. 首先来说一下实现这个分页查询的流程: 一.封装分页信息: 需要分页的部分我们首先要做的是为分页封装一个分页实体,方便返回查询信息,封装如下: /** *封装分页信息 * @author YoungJong * */ public class PageModel<E> { //结果集 p

[原创]java WEB学习笔记90:Hibernate学习之路-- -HQL检索方式,分页查询,命名查询语句,投影查询,报表查询

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------