java开发之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
 *
 */
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;
 } 

}

更多关于java开发之Jdb分页源码实例请查看下面的相关链接

(0)

相关推荐

  • java jdbc连接mysql数据库实现增删改查操作

    jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的时候才能更好的去理解这些成熟的框架是如何去实现增删改查

  • java数据库开发之JDBC基础使用方法及实例详解

    1.什么是JDBC JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序 JDBC 数据库访问规范 应用程序 <-> JDBC <-> MySQL驱动 <-> MySQL                  <-> Oracle驱动 <-> Oracle 导入jar包 加载驱动 C

  • 基于Java回顾之JDBC的使用详解

    尽管在实际开发过程中,我们一般使用ORM框架来代替传统的JDBC,例如Hibernate或者iBatis,但JDBC是Java用来实现数据访问的基础,掌握它对于我们理解Java的数据操作流程很有帮助. JDBC的全称是Java Database Connectivity. JDBC对数据库进行操作的流程:•连接数据库•发送数据请求,即传统的CRUD指令•返回操作结果集JDBC中常用的对象包括:•ConnectionManager•Connection•Statement•CallableStat

  • 在eclipse导入Java的jar包的方法JDBC(图文说明)

    在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此,导入的方法是 打开eclipse 1.右击要导入jar包的项目,点properties  2.左边选择java build path,右边选择libraries  3.选择add External jars  4.选择jar包的按照路径下的 确定后就行了. Java连接MySQL的最新驱动包下载地址 http://www.mysql.com/downloads/connector/j 有两种方法导入jar包

  • Java基于JDBC连接数据库及显示数据操作示例

    本文实例讲述了Java基于JDBC连接数据库及显示数据操作.分享给大家供大家参考,具体如下: 1. 导入jdbc包 java要连接MySQL数据库需要用到JDBC工具(mysql-connector-java-5.1.39-bin.jar),这是一个jar包,不同的数据库对应不同的jar包,这里用的是MySQL数据库jar包,导入很简单,鼠标对项目右击 - Build Path - Configure Build Path - 右侧选Libraries - Add External JARs,选

  • Java开发Oracle数据库连接JDBC Thin Driver 的三种方法

    Oracle的jdbc驱动三种主要分类: 1.JDBC OCI: oci是oracle call interface的缩写,此驱动类似于传统的ODBC 驱动.因为它需要Oracle Call Interface and Net8,所以它需要在运行使用此驱动的JAVA程序的机器上安装客户端软件,其实主要是用到orcale客户端里以dll方式提供的oci和服务器配置. 2.JDBC Thin: thin是for thin client的意思,这种驱动一般用在运行在WEB浏览器中的JAVA程序.它不是

  • Java基础开发之JDBC操作数据库增删改查,分页查询实例详解

    对数据库的操作无非就是增删改查,其中数查询操作最为复杂,所以将查询单独讲解,我这里用的Mysql数据库 增删改查操作 分页查询操作 1.查询结果以list返回 2.查询结果以jsonArray返回 3.查询总记录条数 先看一下相关的配置信息 public static final String USER_NAME = "root"; public static final String PWD = "123456789"; public static final S

  • java数据库开发之JDBC的完整封装兼容多种数据库

    目前此代码我只用过mysql和oracle数据库测试过,但相信其它数据库都是可以的,只要导入你需要操作的数据库jar包,驱动等就可,下面上代码: import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Resul

  • Java使用jdbc连接MySQL数据库实例分析

    本文实例讲述了Java使用jdbc连接MySQL数据库的方法.分享给大家供大家参考,具体如下: 使用jdbc连接数据库: 可以直接在方法中定义url.user.psd等信息,也可以读取配置文件,但是在web项目中肯定是要使用第二种方式的,为了统一,只介绍第二种方式. 步骤 1.创建配置文件db.properties 无论是eclipse还是myeclipse,在工程下右键->new->file,以properties为后缀名就好了. 配置文件内容: #连接数据库的url,如果主机地址是loca

  • java使用jdbc连接数据库简单实例

    本文为大家分享了java使用jdbc连接数据库的具体代码,供大家参考,具体内容如下 package com.tr.jdbc; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.apache.commons.dbcp2.BasicDataSource; public class CollectionFac

  • Java使用JDBC连接数据库的实现方法

    本文实例讲述了Java使用JDBC连接数据库的实现方法,是Java数据库程序设计里非常实用的重要技巧.分享给大家供大家参考.具体如下: JDBC(Java Data Base Connectivity)数据库连接,通常我们在编写web应用或java应用程序要连接数据库时就要使用JDBC.使用JDBC连接数据库一般步骤有: 1.加载驱动程序 Class.forName(driver); 2.创建连接对象 Connection con = DriverManager.getConnection(ur

  • Java实现JDBC连接数据库简单案例

    一.准备好数据库 例如,MS SQL Server2008环境下,创建school数据库,内含一个表student(sid,sname,ssex,sage),并添加若干行数据. 二.配置数据库驱动文件 1.准备好(下载)sqlserver2008.jar文件: 2.拷贝下载的jar文件到工程中: 在java工程中创建lib目录,拷贝数据库驱动jar文件到该目录 3.添加并在Eclipse的Java工程中配置 (右击工程,选择Bulid path–>config Build Path–>addJ

随机推荐