java操作oracle分页过程

java操作oracle分页过程

因为在做一个项目中存在大量的分页操作,每一个表都要写一段分页的SQL,所以萌生出自己写一个通用的过程的方法,因为本人刚入门,所以有漏洞的话请帮忙指出啦!

oracle分页SQL

SELECT * FROM 
	(SELECT childTable.*,ROWNUM childRowNum FROM(SELECT * FROM demo ORDER BY id) 
	childTable WHERE ROWNUM<=(pageIndex*pageSize)) 
WHERE childRowNum>(pageIndex - 1)*pageSize;

oracle通用分页SQL

使用时传入 表名、每页显示的数据、显示的页码即可获得分页后的集合

CREATE OR REPLACE PROCEDURE xcsp_PAGING( 
    tableName IN VARCHAR2,
    pageSize  IN INT,
    pageIndex IN INT,
    out_list  OUT SYS_REFCURSOR)  
IS
   pagingSql VARCHAR2(2000);
BEGIN
    pagingSql := 'SELECT * FROM 
    (SELECT childTable.*,ROWNUM childRowNum FROM(SELECT * FROM '||tableName||' ORDER BY id) childTable WHERE ROWNUM<=('||pageindex||' * '||pageSize||')) 
     WHERE childRowNum>('||pageindex||' - 1)*'||pageSize||'';
    OPEN  out_list FOR pagingSql;
END;

java操作oracle过程代码

@Test
public void test1() { 
    Connection connection = DBUtils.getConnection();
    CallableStatement callableStatement = null;
    PreparedStatement preparedStatement = null;
    ResultSet rs = null;
        try {
        callableStatement = connection.prepareCall("{call xcsp_PAGING(?,?,?,?)}");
        //这里的demo指的是数据库中的表名
        callableStatement.setString(1, "demo");
        callableStatement.setInt(2, 10);
        callableStatement.setInt(3, 4);
        callableStatement.registerOutParameter(4, OracleTypes.CURSOR);
        callableStatement.execute();
        List<Map> list = new ArrayList<Map>();
        rs = (ResultSet) callableStatement.getObject(4);//拿取存储过程返回的集合
        while (rs.next()) {
            Map map = new HashMap();
            map.put("id", rs.getInt("id"));
            map.put("name", rs.getString("name"));
            map.put("sex", rs.getString("sex"));
            list.add(map);
            }
            System.out.println(list.size());
        } catch (SQLException e) {
        e.printStackTrace();
    } 
}
package com.list.struts.util; import java.util.ArrayList; public class Page { //当前跳转的页面情况 private String pagetype; private PaginationBean pagination; private ArrayList result; //构造函数实例化接收一个pagetype和PaginationBean对象 public Page(String pagetype, PaginationBean pagination) { this.pagetype = pagetype; this.pagination = pagination; } /** * * */ public boolean isEmpty() { if (pagetype == null || pagetype.equals("")) { return true; } else { return false; } } /** * * * */ public ArrayList getResult() { if (!isEmpty()) { if (pagetype.equals("nextPage")) { result = pagination.getNextPage(); } else if (pagetype.equals("previousPage")) { result = pagination.getPreviouspage(); } else if (pagetype.equals("lastPage")){ result = pagination.getLastPage(); } else if (pagetype.equals("firstPage")){ result = pagination.getFirstPage(); } else{ result=pagination.getJumpPage(pagetype); } } else { result = pagination.getProducts(); } return result; } /** * * * */ //此对象中保存了页面的所有情况,包括多少页等信息 public PaginationBean getPagePagination() { return pagination; } /** * * */ //实例化PaginationBean的构造函数 public void Init(ArrayList result) { this.result = result; pagination = new PaginationBean(result); } } ------------------------------ import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import com.list.struts.form.ListForm; import com.list.struts.util.Page; import com.list.struts.util.PageBean; import com.list.struts.util.PaginationBean; import com.list.struts.vo.newgetResouce; public class ListAction extends Action { /* * Generated Method
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值