- 浏览: 794 次
- 性别:
- 来自: 苏州
最新评论
我的Oralce分页实现,主要使用了三个类一个接口!
具体代码如下:
DatabaseConnection.java
Emp.java
Pagination接口
分页具体实现
测试页
本人是初学者,各位有好的意见,请多多指教!谢谢!
具体代码如下:
DatabaseConnection.java
package com.founder.oraclepagination.dbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * 数据库连接类用于连接或销毁数据库对象 * @author husong * */ public class DatabaseConnection { /** * 数据库连接驱动 */ private static final String DRIVER = "oracle.jdbc.driver.OracleDriver" ; /** * 数据库连接URL地址 */ private static final String URL = "jdbc:oracle:thin:@localhost:1521:hsit" ; /** * 数据库连接用户名 */ private static final String USERNAME = "scott" ; /** * 数据库连接密码 */ private static final String PASSWORD = "tiger" ; private Connection conn = null ; static{ try{ Class.forName(DRIVER) ; }catch(ClassNotFoundException e){ e.printStackTrace() ; } } /** * 获取数据库连接 * @return 可用的数据库连接对象 */ public Connection getConnection(){ try{ conn = DriverManager.getConnection(URL,USERNAME,PASSWORD) ; }catch(SQLException e){ e.printStackTrace() ; } return conn ; } /** * 销毁数据库各种对象 * @param 各种数据库对象如Connection Statement ResultSet */ public void destroy(Object...params){ if(null==params||params.length<1){ System.err.println("没有要销毁的对象或要销毁的对象为空"); System.exit(0); }else{ try{ for(int i=0;i<params.length;i++){ Object obj = params[i] ; if(obj instanceof ResultSet){ ResultSet rs = (ResultSet)obj ; if(null!=rs) rs.close() ; }else if(obj instanceof Statement){ Statement stmt =(Statement)obj ; if(null!=stmt) stmt.close() ; }else if(obj instanceof Connection){ Connection _conn = (Connection)obj ; if(null!=_conn) _conn.close() ; }else{ System.err.println("params的类型不匹配,只能为Connection,Statement,ResultSet或其子类"); System.exit(0) ; } } }catch(Exception e){ e.printStackTrace() ; } } } }
Emp.java
package com.founder.oraclepagination.vo; import java.util.Date; /** * 雇员实体类 * * @author husong * */ public class Emp { /** * 雇员编号 */ private int empno; /** * 雇员名称 */ private String ename; /** * 工种 */ private String job; /** * 领导工号 */ private int mgr; /** * 入职日期 */ private Date hiredate; /** * 薪酬 */ private float sal; /** * 奖金 */ private float comm; /** * 部门代码 */ private int deptno; public int getEmpno() { return empno; } public void setEmpno(int empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public int getMgr() { return mgr; } public void setMgr(int mgr) { this.mgr = mgr; } public Date getHiredate() { return hiredate; } public void setHiredate(Date hiredate) { this.hiredate = hiredate; } public float getSal() { return sal; } public void setSal(float sal) { this.sal = sal; } public float getComm() { return comm; } public void setComm(float comm) { this.comm = comm; } public int getDeptno() { return deptno; } public void setDeptno(int deptno) { this.deptno = deptno; } }
Pagination接口
package com.founder.oraclepagination.pagination; import java.sql.SQLException; import java.util.List; /** * 分页接口 * @author husong * */ public interface Pagination { /** * 获取总记录数 * @return 获取到的总记录数 * @throws SQLException */ int getRowCount() throws SQLException; /** * 获取总页数 * @return 获取到的总页数 */ int getPageCount() ; /** * 依据当前页号取得相应的数据 * @param 当前页号 * @return 当前页号取得相应的数据 * @throws SQLException */ List<Object> getPage(int pageNum) throws SQLException; }
分页具体实现
package com.founder.oraclepagination.pagination.impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.founder.oraclepagination.dbc.DatabaseConnection; import com.founder.oraclepagination.pagination.Pagination; import com.founder.oraclepagination.vo.Emp; /** * 雇员信息分页实现类 * @author husong * */ public class EmpPaginationImpl implements Pagination { private DatabaseConnection dbc = null ; private int pageSize = 5 ; public EmpPaginationImpl(){ this.dbc = new DatabaseConnection() ; } public void setPageSize(int pageSize){ if(0>=pageSize){ this.pageSize = 5 ; }else{ this.pageSize = pageSize ; } } public int getPageSize(){ return this.pageSize ; } @Override public int getRowCount() throws SQLException { int count = 0 ; Connection conn = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; String sql = "select count(*) as count from emp" ; try{ conn = dbc.getConnection() ; pstmt = conn.prepareStatement(sql) ; rs = pstmt.executeQuery() ; if(null!=rs&&rs.next()) count = rs.getInt("count") ; }catch(SQLException e){ throw e ; }finally{ dbc.destroy(rs,pstmt,conn) ; } return count ; } @Override public int getPageCount() { int rowCount = 0 ; try { rowCount = getRowCount(); } catch (SQLException e) { e.printStackTrace(); } return (rowCount%pageSize==0)?(rowCount/pageSize):(rowCount/pageSize+1) ; } @Override public List<Object> getPage(int pageNum) throws SQLException { List<Object> list = null ; String sql = "select * from (select a.*,rownum rn from (select * from emp)a where Rownum<=?) where rn>?" ; Connection conn = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; try{ if(0>=pageNum){ pageNum = 1 ; }else if(pageNum>=getPageCount()){ pageNum = getPageCount() ; } conn = dbc.getConnection() ; pstmt = conn.prepareStatement(sql) ; pstmt.setInt(1, pageSize*pageNum) ; pstmt.setInt(2, pageSize*(pageNum-1)) ; rs = pstmt.executeQuery() ; list = new ArrayList<Object>() ; /*System.out.println(pageSize*(pageNum)); System.out.println(pageSize*(pageNum-1)); System.out.println(sql);*/ if(null!=rs){ while(rs.next()){ Emp emp = new Emp() ; emp.setEmpno(rs.getInt("empno")) ; emp.setEname(rs.getString("ename")); emp.setJob(rs.getString("job")); emp.setMgr(rs.getInt("mgr")); emp.setSal(rs.getFloat("sal")); emp.setComm(rs.getFloat("comm")) ; emp.setHiredate(rs.getDate("hiredate")) ; emp.setDeptno(rs.getInt("deptno")) ; list.add(emp); } } }catch(SQLException e){ throw e ; }finally{ dbc.destroy(rs,pstmt,conn) ; } return list ; } }
测试页
<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="gbk"%> <%@ page import="com.founder.oraclepagination.vo.*,com.founder.oraclepagination.pagination.*,com.founder.oraclepagination.pagination.impl.*,java.util.*" %> <% String pageNumStr = request.getParameter("pageNum") ; int pageNum =1 ; List<Object> list = null ; Pagination pagination =new EmpPaginationImpl() ; if(null==pageNumStr){ pageNumStr ="1" ; } try{ //pageNumStr = request.getParameter("pageNum") ; pageNum = Integer.parseInt(pageNumStr) ; if(0>=pageNum){ pageNum=1 ; }else if(pageNum>=pagination.getPageCount()){ pageNum= pagination.getPageCount() ; } }catch(Exception e){ pageNum =1 ; //e.printStackTrace() ; } list = pagination.getPage(pageNum) ; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <link rel="stylesheet" href="css/main.css" type="text/css"/> <title>Employee detail</title> </head> <body> <div id="container"> <table> <tr> <th>雇员编号</th> <th>雇员名称</th> <th>工种</th> <th>主管编号</th> <th>部门代码</th> <th>入职日期</th> <th>薪酬</th> <th>佣金</th> </tr> <% if(null!=list){ for(Object obj:list){ Emp emp = null ; if(obj instanceof Emp){ emp = (Emp)obj ; } %> <tr> <td><%=emp.getEmpno() %></td> <td><%=emp.getEname() %></td> <td><%=emp.getJob() %></td> <td><%=emp.getMgr() %></td> <td><%=emp.getDeptno() %></td> <td><%=emp.getHiredate() %></td> <td><%=emp.getSal() %></td> <td><%=emp.getComm() %></td> </tr> <% } } %> </table> <p> 总记录数为<%=pagination.getRowCount() %>,共<%=pagination.getPageCount() %>页,当前第<%=pageNum %>页 <% if(1==pageNum){ %> <a href="index.jsp?pageNum=<%=pageNum+1 %>">下一页</a> <% }else if(pageNum==pagination.getPageCount()){ %> <a href="index.jsp?pageNum=<%= pageNum-1 %>">上一页</a> <% }else{ %> <a href="index.jsp?pageNum=<%=pageNum+1 %>">下一页</a> <a href="index.jsp?pageNum=<%= pageNum-1 %>">上一页</a> <% } %> </p> </div> </body> </html>
本人是初学者,各位有好的意见,请多多指教!谢谢!
- OraclePagination.zip (1.4 MB)
- 下载次数: 3
发表评论
文章已被作者锁定,不允许评论。
相关推荐
以下将详细介绍Oracle数据库中实现分页查询的方法以及相关知识点。 在Oracle数据库中,常见的分页查询方法有ROWNUM和ROW_NUMBER()函数,以及使用子查询和连接操作来实现分页。 1. ROWNUM方法: ROWNUM是Oracle中的...
在理解Oracle分页的具体实现之前,我们首先需要明确几个基本的概念: 1. **ROWNUM**:Oracle提供了一个内置的伪列`ROWNUM`,它可以为查询结果集中的每一行返回一个唯一的行号。`ROWNUM`从1开始计数,并且只能用于`...
### Oracle分页实现方法 #### 方法一:使用ROWNUM ROWNUM是Oracle中的一个伪列,它可以为结果集中的每一行分配一个唯一的行号。利用ROWNUM进行分页的基本思想是在内层查询中筛选出所有需要的数据,然后在外层查询...
在“ssh+oracle分页”这个主题中,我们将深入探讨如何利用这三个框架与Oracle数据库进行集成,并实现数据的分页显示。 1. **Struts框架**:Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。...
Oracle 分页查询是指在查询结果中,通过限制行数来实现分页的功能。常用的分页查询方法有两种:ROWNUM 和 OFFSET Fetch。ROWNUM 是 Oracle 专门用于分页查询的伪列,OFFSET Fetch 是 Oracle 12c 及更高版本中引入的...
Oracle JDBC分页实现是数据库操作中的一个重要环节,尤其是在处理大量数据时,为了提高用户体验和系统性能,分页查询显得尤为重要。Oracle数据库提供了多种方法来实现分页查询,其中包括使用ROWNUM伪列、游标...
### Oracle分页查询详解 #### 一、分页查询的重要性 在数据库操作中,分页查询是一项非常重要的技术。尤其当处理大量数据时,一次性获取所有数据不仅会消耗大量的网络带宽,还可能导致前端页面加载缓慢,用户体验...
在这个Oracle分页实例中,我们将探讨如何结合分页控件实现数据的分页显示。 首先,我们看到一个名为`webdiyer:AspNetPager`的控件,这是一个ASP.NET的Web分页控件。这个控件包含了几个关键属性: 1. `PageSize`:...
总结来说,Oracle和JSP结合实现分页涉及以下几个步骤:在Oracle中构造分页查询,使用JDBC在Servlet中执行查询,然后在JSP页面中展示数据。理解并熟练掌握这些步骤对于开发高效、用户友好的数据驱动网站至关重要。在...
Oracle 的 ROWNUM 函数可以用来实现分页查询。基本格式如下: ```sql SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM ) WHERE RN >= 21 ``` 这条语句的执行顺序是:...
根据所提供的信息,我们可以提炼出以下关于“ORACLE分页查询效率”的相关知识点: ### 一、Oracle中的分页查询 #### 1.1 分页查询的重要性 - **背景介绍**:在实际应用中,数据库查询结果往往非常庞大,一次性加载...
在这个Java和Oracle结合的分页实现中,我们将探讨如何通过Java后端配合Oracle数据库进行有效的分页处理。 首先,Oracle提供了一种名为ROWNUM的伪列,它可以用来对查询结果进行排序和限制。在执行分页查询时,我们...
本文件包包含了一系列用于实现Oracle数据库分页查询的类,帮助开发者解决分页问题。 首先,`StringUtil.java`文件很可能包含了字符串操作的相关工具方法,这些方法在处理SQL语句时非常实用,特别是构建分页查询的...
在这个场景中,我们将深入探讨如何在Oracle中针对emp表实现分页查询的存储过程。 首先,让我们了解什么是分页查询。在大数据量的表格中,一次性加载所有数据可能会对系统性能造成压力,因此通常我们会采用分页的...
Oracle 数据库提供了多种方法来实现分页查询,其中使用存储过程是一种高效且灵活的方式。本文将详细介绍如何在 Oracle 中创建一个用于分页查询并返回总记录数的存储过程。 #### 核心概念 1. **存储过程**:存储在...
本示例着重讲解如何利用JDBC和Oracle数据库实现分页功能,同时涵盖一个表的基本操作:增加、删除和修改。 首先,我们需要了解JDBC。JDBC是Java API,它提供了一套标准接口,使得Java程序可以与各种类型的数据库进行...
MySQL、SQL Server、Oracle 分页及 Java 分页统一接口实现 MySQL、SQL Server、Oracle 分页是关系数据库管理系统中最基本也是最常用的操作之一,而 Java 分页统一接口实现则是对数据库操作的抽象和封装。本文将对 ...
本项目着重讲解如何在Spring MVC环境中,结合JDBC技术,实现对Oracle数据库的分页查询功能,并通过Ajax进行动态加载,提升用户体验。此外,我们还将涉及LigerUI和jEditable两个前端库,以增强用户界面和交互性。 ...
总之,Java实现Oracle分页策略涉及到数据库查询设计、Java DAO接口的实现以及前端页面的展示。通过合理的分页策略,我们可以有效管理和展示大量的数据库记录,同时提升应用的性能和用户体验。在实际编程中,应根据...