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

时间:2021-06-08 12:44:16 

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();
            }
        }
    }
}

标签:java,oracle,分页,存储过程
0
投稿

猜你喜欢

  • 解析C# 程序结构

    2021-11-15 05:22:59
  • 单例模式 分析代码优化方法

    2021-07-28 15:49:51
  • Java守护线程实例详解_动力节点Java学院整理

    2023-03-29 08:14:30
  • Java操作MongoDB模糊查询和分页查询

    2023-03-12 20:31:22
  • java集合Collection常用方法解读

    2023-11-16 18:29:07
  • Java面试题及答案集锦(基础题122道,代码题19道)

    2023-11-25 12:36:17
  • java实现鲜花销售系统

    2023-08-29 20:23:42
  • 线程池中使用spring aop事务增强

    2021-08-06 06:37:19
  • Android集成Flutter

    2023-07-06 13:07:33
  • 聊一聊Java的JVM类加载机制

    2023-11-08 03:58:37
  • SpringBoot项目集成Flyway进行数据库版本控制的详细教程

    2023-11-24 05:20:33
  • Spring超详细讲解IOC与解耦合

    2023-06-16 12:32:50
  • springboot实现异步任务

    2023-04-23 01:25:21
  • java利用socket通信实现Modbus-RTU通信协议的示例代码

    2023-05-02 21:37:40
  • Java之JFrame输出Helloworld实例

    2022-01-19 16:40:52
  • java实现登录验证码功能

    2021-06-08 19:34:18
  • Java基于JDBC实现事务,银行转账及货物进出库功能示例

    2022-03-24 07:06:34
  • Android自定义TextView跑马灯效果

    2023-08-07 01:14:57
  • mybatis mybatis-plus-generator+clickhouse自动生成代码案例详解

    2021-06-06 10:12:55
  • java开发之内部类的用法

    2023-02-04 21:30:07
  • asp之家 软件编程 m.aspxhome.com