zoukankan      html  css  js  c++  java
  • 调用oracle 分页存储过程 返回游标数据集

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

  • 相关阅读:
    处理excel表
    生成登陆验证码
    IKAnalyzer分词例子
    JAVA中不用+ 如何实现加法
    开发者应该掌握的Java代码优化技能
    Spring Boot Maven插件
    23种设计模式(1)-单例模式
    Spring AOP 创建切面
    Spring AOP 创建增强类
    Spring AOP基础知识
  • 原文地址:https://www.cnblogs.com/Struggles/p/5443281.html
Copyright © 2011-2022 走看看