• 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();
                }
            }
        }
    }
  • 相关阅读:
    python中的if...else...、while、for
    linux的/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow
    [国家集训队]middle
    [SCOI2007]修车
    基本图论-连通分量(强/弱联通 割点/边 边/点双)
    [NOI2008]奥运物流
    [NOI2008]假面舞会
    [NOI2008]设计路线
    [SCOI2009]windy数
    [SCOI2013]多项式的运算
  • 原文地址:https://www.cnblogs.com/xgxhellboy/p/java.html
Copyright © 2020-2023  润新知