java调用oracle分页存储过程示例

 更新时间:2014年03月02日 11:18:09   作者:  
这篇文章主要介绍了java调用oracle分页存储过程,需要的朋友可以参考下

1.分页类

复制代码 代码如下:

package org.zh.basic;

/**
 * 页面类
 *
 * @author keven
 *
 */
public class PageInfo {

    // 定义
    private String p_tableName; // -表名
    private String p_strWhere; // --查询条件
    private String p_orderColumn; // --排序的列
    private String p_orderStyle; // --排序方式
    private int p_curPage; // --当前页
    private int p_pageSize; // --每页显示记录条数
    private int p_totalRecords; // --总记录数
    private int p_totalPages; // --总页数

    // / <summary>
    // / 定义函数
    // / </summary>
    public PageInfo() {
    }

    public PageInfo(String p_tableName, String p_strWhere,
            String p_orderColumn, String p_orderStyle, int p_curPage,
            int p_pageSize, int p_totalRecords, int p_totalPages) {
        this.p_tableName = p_tableName;
        this.p_strWhere = p_strWhere;
        this.p_orderColumn = p_orderColumn;
        this.p_orderStyle = p_orderStyle;
        this.p_curPage = p_curPage;
        this.p_pageSize = p_pageSize;
        this.p_totalRecords = p_totalRecords;
        this.p_totalPages = p_totalPages;
    }

    public String getP_tableName() {
        return p_tableName;
    }

    public void setP_tableName(String pTableName) {
        p_tableName = pTableName;
    }

    public String getP_strWhere() {
        return p_strWhere;
    }

    public void setP_strWhere(String pStrWhere) {
        p_strWhere = pStrWhere;
    }

    public String getP_orderColumn() {
        return p_orderColumn;
    }

    public void setP_orderColumn(String pOrderColumn) {
        p_orderColumn = pOrderColumn;
    }

    public String getP_orderStyle() {
        return p_orderStyle;
    }

    public void setP_orderStyle(String pOrderStyle) {
        p_orderStyle = pOrderStyle;
    }

    public int getP_curPage() {
        return p_curPage;
    }

    public void setP_curPage(int pCurPage) {
        p_curPage = pCurPage;
    }

    public int getP_pageSize() {
        return p_pageSize;
    }

    public void setP_pageSize(int pPageSize) {
        p_pageSize = pPageSize;
    }

    public int getP_totalRecords() {
        return p_totalRecords;
    }

    public void setP_totalRecords(int pTotalRecords) {
        p_totalRecords = pTotalRecords;
    }

    public int getP_totalPages() {
        return p_totalPages;
    }

    public void setP_totalPages(int pTotalPages) {
        p_totalPages = pTotalPages;
    }

}

2 调用

复制代码 代码如下:

package org.zh.sys.server;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import org.hibernate.Session;
import org.zh.basic.PageInfo;
import org.zh.dao.HibernateSessionFactory;
import oracle.jdbc.driver.OracleTypes;
import oracle.jdbc.OracleCallableStatement;


public class GeneratePage {

    public GeneratePage() {

    }

    public static ArrayList Prc_Page(PageInfo page) {
        ArrayList list = new ArrayList();
        Map mp;
        Session s = null;
        Connection conn = null;
        ResultSet rs = null;
        CallableStatement proc = null;
        try {
            s = HibernateSessionFactory.getSession();
            conn = s.connection();
            proc = conn.prepareCall("{call pages.prc_page(?,?,?,?,?,?,?,?,?)}");
            proc.setString(1, page.getP_tableName());
            proc.setString(2, page.getP_strWhere());
            proc.setString(3, page.getP_orderColumn());
            proc.setString(4, page.getP_orderStyle());
            proc.setInt(5, page.getP_curPage());
            proc.setInt(6, page.getP_pageSize());
            proc.registerOutParameter(7, OracleTypes.NUMBER);
            proc.registerOutParameter(8, OracleTypes.NUMBER);
            proc.registerOutParameter(9, OracleTypes.CURSOR);
            proc.execute();
            // page.setP_totalRecords(proc.getInt("p_totalRecords"));
            // page.setP_totalPages(proc.getInt("p_totalPages"));
            // list = (ArrayList) proc.getObject("v_cur");
            page.setP_totalRecords(proc.getInt(7));
            page.setP_totalPages(proc.getInt(8));
            rs = ((OracleCallableStatement) proc).getCursor(9); // 得到输出结果集参数
            ResultSetMetaData rsmd = rs.getMetaData();
            int numberOfColumns = rsmd.getColumnCount();
            while (rs.next()) {
                mp = new HashMap(numberOfColumns);
                for (int r = 1; r < numberOfColumns; r++) {
                    mp.put(rsmd.getColumnName(r), rs.getObject(r));
                }
                list.add(mp);
            }
            return list;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return list;
        } catch (Exception ex2) {
            ex2.printStackTrace();
            return list;
        } finally {
            try {
                if (proc != null) {
                    proc.close();
                }
                if (rs != null) {
                    rs.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException ex1) {
                ex1.printStackTrace();
            }
        }
    }
}

相关文章

  • Spring Boot基于Active MQ实现整合JMS

    Spring Boot基于Active MQ实现整合JMS

    这篇文章主要介绍了Spring Boot基于Active MQ实现整合JMS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Java基础教程之static五大应用场景

    Java基础教程之static五大应用场景

    这篇文章主要给大家介绍了关于Java基础教程之static五大应用场景的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • SpringMVC中MultipartFile上传获取图片的宽度和高度详解

    SpringMVC中MultipartFile上传获取图片的宽度和高度详解

    本篇文章主要介绍了SpringMVC中MultipartFile上传获取图片的宽度和高度,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 浅谈java里的EL表达式在JSP中不能解析的问题

    浅谈java里的EL表达式在JSP中不能解析的问题

    下面小编就为大家带来一篇浅谈java里的EL表达式在JSP中不能解析的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Java内部类应用之静态内部类应用示例

    Java内部类应用之静态内部类应用示例

    这篇文章主要介绍了Java内部类应用之静态内部类应用,结合实例形式分析了Java静态内部类的原理、功能、用法及相关操作注意事项,需要的朋友可以参考下
    2019-09-09
  • Maven解决jar包版本冲突的4种方法详解

    Maven解决jar包版本冲突的4种方法详解

    这篇文章主要给大家介绍了关于Maven解决jar包版本冲突的4种方法代码,maven工程要导入jar包的坐标,就必须要考虑解决jar包冲突,文中介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • Java 实现微信和支付宝支付功能

    Java 实现微信和支付宝支付功能

    这篇文章主要介绍了Java 实现微信和支付宝支付功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Struts2 控制文件上传下载功能实例代码

    Struts2 控制文件上传下载功能实例代码

    这篇文章主要介绍了Struts2 控制文件上传下载功能实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-05-05
  • Spring中Eureka的服务下线详解

    Spring中Eureka的服务下线详解

    这篇文章主要介绍了Spring中Eureka的服务下线详解,根据默认的策略,如果在一定的时间内,客户端没有向注册中心发送续约请求,那么注册中心就会将该实例从注册中心移除,需要的朋友可以参考下
    2023-11-11
  • SpringBoot+Mybatis实现登录注册的示例代码

    SpringBoot+Mybatis实现登录注册的示例代码

    这篇文章主要介绍了SpringBoot+Mybatis实现登录注册的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论