`

Jdbc 实现分页

 
阅读更多

@author 刘庆

jdbc 实现分页,的实现

原理这个就不介绍了。。

总之是用jdbc 的游标移动

package com.sp.person.sql.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
import java.util.TreeMap;

import javax.sql.DataSource;

/**
 * 常常有同事在问JDBC 分页查询 这里给二个例子介绍一下
 * JDBC 分页查询
 * 分成二种方式希望对大家有所帮助
 * 分另表示了absolute 与relative 的区别
 * @see 这时用到一个数据源设计模式 
 * 数据源与数据库连接没有关系 
 * 例用接口回调的特性
 * @author liuqing
 * @version 1.0
 * 2011-8-2
 *
 */
public class JdbcUtil {
	
	/**
	 * 数据源
	 */
	private DataSource dataSource;
	
	/**
	 * 不否启用多数据源
	 */
	private boolean isMultipleDataSource;
	
	/**
	 * 有时一个系统可能要使用多个数据源,存放多个数据源
	 */
	private Map<String,DataSource> dataSources = new TreeMap<String,DataSource>();
	
	/**
	 * if true isMultipleDataSource is Key to DataSource
	 */
	private String dataSourceKey;

	/**
	 * 默认构造器
	 */
	public JdbcUtil() {
		
	}
	
	/**
	 * 构造器 Spring 的构造器注入
	 * @param dataSource
	 */
	public JdbcUtil(DataSource dataSource) {
		this.dataSource = dataSource;
	}

	/**
	 * JDBC 分页查询
	 * @param sql       SQL 查询语句
	 * @param firstSize 起始页
	 * @param maxSize   返回数据条数
	 * @return ResultSet
	 * @throws SQLException
	 */
	public ResultSet queryPageAbsolute(String sql,
			int firstSize,int maxSize) throws SQLException {
		PreparedStatement pre = this.getConn().prepareStatement(sql);
		pre.setMaxRows(maxSize);
		ResultSet rs = pre.executeQuery();
		rs.absolute(firstSize * maxSize);
		return rs;
	}
	
	/**
	 * JDBC 分页查询
	 * @param sql        SQL 查询语句
	 * @param firstSize  起始页
	 * @param maxSize    返回数据条数
	 * @return ResultSet 返回结果集
	 * @throws SQLException
	 */
	public ResultSet queryPageRelative(String sql,
			int firstSize,int maxSize) throws SQLException {
		PreparedStatement pre = getConn().prepareStatement(sql);
		pre.setMaxRows(maxSize);
		ResultSet rs = pre.executeQuery();
		rs.relative(firstSize);
		return rs;
	}
	
	/**
	 * 
	 * @return Connection
	 * @throws SQLException
	 */
	private Connection getConn() throws SQLException {
		//使用多数据源的情况
		if (this.isMultipleDataSource) {
			DataSource v_dataSource = this.queryDataSourceByKey();
			if (v_dataSource != null) {
				return v_dataSource.getConnection();
			}
		}
		return this.dataSource.getConnection();
	}
	/**
	 * 获得多数据源方法
	 * @return DataSource
	 */
	public DataSource queryDataSourceByKey() {
		for (Map.Entry<String, DataSource> ds:this.dataSources.entrySet()) {
			if (ds.getKey().equals(dataSourceKey)) {
				return ds.getValue();
			}
		}
		return null;
	}
	
	/**
	 * 获得多数据源方法
	 * @return DataSource
	 */
	public DataSource queryDataSourceByKey(String useKey) {
		for (Map.Entry<String, DataSource> ds:this.dataSources.entrySet()) {
			if (ds.getKey().equals(useKey)) {
				return ds.getValue();
			}
		}
		return null;
	}
	
	/**
	 * 数据源
	 */
	public DataSource getDataSource() {
		return dataSource;
	}

	/**
	 * 数据源 setter 注入
	 */
	public void setDataSource(DataSource dataSource) {
		this.dataSource = dataSource;
	}

	/**
	 * @return the isMultipleDataSource
	 */
	public boolean isMultipleDataSource() {
		return isMultipleDataSource;
	}

	/**
	 * @param isMultipleDataSource the isMultipleDataSource to set
	 */
	public void setMultipleDataSource(boolean isMultipleDataSource) {
		this.isMultipleDataSource = isMultipleDataSource;
	}

	/**
	 * @return the dataSources
	 */
	public Map<String, DataSource> getDataSources() {
		return dataSources;
	}

	/**
	 * @param dataSources the dataSources to set
	 */
	public void setDataSources(Map<String, DataSource> dataSources) {
		this.dataSources = dataSources;
	}

	/**
	 * 返回当前使用的数据源
	 * @return the dataSourceKey
	 */
	public String getDataSourceKey() {
		return dataSourceKey;
	}

	/**
	 * 要使用的数据源为
	 * @param dataSourceKey the dataSourceKey to set
	 */
	public void setDataSourceKey(String dataSourceKey) {
		this.dataSourceKey = dataSourceKey;
	}

}

 

6
6
分享到:
评论
2 楼 summus 2014-12-11  
1 楼 add2ws 2013-03-01  
找不到重点

相关推荐

    jdbc实现分页功能

    以下是一个简单的示例代码片段,展示如何使用JDBC实现分页: ```java int pageSize = 10; // 每页记录数 int currentPage = 1; // 当前页数 String sql = "SELECT * FROM table_name LIMIT ? OFFSET ?"; try ...

    sturts+oracle+jdbc实现分页

    总结来说,"sturts+oracle+jdbc实现分页"是一个典型的Java Web开发任务,涉及到Struts框架、Oracle数据库操作和JDBC技术的综合运用。通过编写Action类处理请求,利用Oracle的ROWNUM进行分页查询,并通过JDBC接口与...

    纯JSP +JDBC实现分页

    本教程主要围绕"纯JSP +JDBC实现分页"这一主题,为初学者提供详细的步骤和讲解,帮助理解JSP、分页和JDBC的基础知识。 首先,我们需要了解JSP(JavaServer Pages)的基本概念。JSP是Java技术的一种,它允许Web...

    JDBC分页查询(MySQL的)

    jdbc分页查询,利用mysql的limit实现分页查询。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    Struts+JDBC实现分页

    本文将深入探讨如何结合这两种技术来实现分页功能。 分页在Web应用中至关重要,它允许用户逐步浏览大量数据,避免一次性加载所有内容导致的性能问题。在Struts框架下,我们可以利用Action、Form和Result等组件,...

    java基于原生的MySql的JDBC分页组件

    本篇将详细介绍如何基于原生的MySQL JDBC实现一个简单的分页组件,这对于初学者理解数据库操作和分页原理非常有帮助。 1. **JDBC基础**: JDBC是Java访问数据库的标准接口,它提供了连接数据库、执行SQL语句、处理...

    jsp+jdbc 真分页(mysql)

    在IT行业中,网页开发是至关重要的一个领域,...总的来说,理解和掌握JSP、JDBC以及如何在MySQL中实现分页是每个Web开发者必备的技能。通过这种方式,可以构建高效、可扩展的网页应用,满足用户对大量数据的浏览需求。

    SpringMVC+JDBC:分页示例

    这个例子展示了如何使用SpringMVC和JDBC实现分页功能。注意,实际项目中可能还需要考虑其他因素,如错误处理、安全性、性能优化等。此外,随着NoSQL数据库的普及和ORM框架的流行,如Hibernate和MyBatis,开发者在...

    jdbc分页demo

    在处理大量数据时,为了提高用户体验,通常需要实现分页功能,以便用户可以逐步加载和浏览数据,而不是一次性加载所有内容。本示例将探讨如何使用JDBC实现一个简单的分页查询。 首先,我们需要理解分页的基本概念。...

    JSP和JDBC分页代码

    通过上述分析,我们可以看到JSP与JDBC结合实现分页功能的全过程。这种技术不仅能够高效地处理大数据量的展示,还能提供搜索和筛选功能,极大地提高了Web应用的性能和用户体验。对于开发者而言,理解并掌握这些核心...

    JavaWeb+JSP+Servlet+JDBC分页查询和查询后分页界面优化最终版

    因此,我们通常使用JDBC实现分页查询,通过设置SQL的LIMIT或OFFSET子句(取决于数据库类型)来只获取当前页面的数据。这不仅提高了性能,还减少了网络传输的数据量。 2. **Servlet**:在分页查询的流程中,Servlet...

    JDBC简单分页方案

    面对这一问题,开发者通常需要借助JDBC提供的资源自行实现分页。基本思路是首先初始化分页参数,如页面大小(pageSize)、当前页(currentPage)、记录总数(countOfRows)以及页面总数(countOfPages)。通过这些...

    JDBC分页 物理分页 mysql实现

    在实现分页时,`OFFSET`常与`LIMIT`一起使用,以确定起始位置。 以下是一个简单的Java代码示例,展示了如何使用JDBC执行带有`LIMIT`和`OFFSET`的SQL查询: ```java int pageSize = 10; // 每页记录数 int pageNum ...

    oracle-jdbc分页实现(只需传入sql语句即可实现分页)

    Oracle数据库提供了多种方法来实现分页查询,其中包括使用ROWNUM伪列、游标(CURSOR)以及Oracle的高级分页功能如ROW_NUMBER()、RANK()和DENSE_RANK()等。 1. ROWNUM伪列: ROWNUM是Oracle数据库特有的一个伪列,它...

    使用jdbc_oracle实现的分页功能

    本示例着重讲解如何利用JDBC和Oracle数据库实现分页功能,同时涵盖一个表的基本操作:增加、删除和修改。 首先,我们需要了解JDBC。JDBC是Java API,它提供了一套标准接口,使得Java程序可以与各种类型的数据库进行...

    java servlet实现分页功能

    以上就是使用Java Servlet和JDBC实现分页功能的基本步骤。在实际开发中,你可能还需要考虑更多细节,例如错误处理、事务管理、安全措施等。理解这些知识点后,你可以根据具体项目需求进行调整和扩展,以构建更加健壮...

    jdbc操作数据库分页

    在JDBC中实现分页,我们可以通过以下步骤: 1. **建立数据库连接**: 使用`DriverManager.getConnection()`方法,传入数据库URL、用户名和密码,获取`Connection`对象。确保已经将对应的JDBC驱动添加到项目的类...

    在JDBC,hibernate中实现分页

    ### 在JDBC与Hibernate中实现分页功能 随着数据量的不断增长,高效地管理和展示大量数据成为了一个挑战。为了优化用户体验并减轻服务器负担,分页技术被广泛应用于各种应用场景中。本文将深入探讨如何在Java开发...

    Java实现分页查询

    以下是一段使用JDBC实现分页查询的基本步骤: 1. **建立数据库连接**:使用`DriverManager.getConnection()`方法,传入数据库URL、用户名和密码,建立与Oracle数据库的连接。 2. **设置SQL查询语句**:在分页查询...

    jsp分页JDBC实现

    总的来说,JDBC实现的JSP分页是一种实用的技术,尤其在没有使用ORM框架如Hibernate的情况下。虽然不如ORM框架那样便捷,但理解这种基础方法有助于深入理解数据访问层的工作原理,为日后的开发打下坚实的基础。

Global site tag (gtag.js) - Google Analytics