⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oraclepagination.java

📁 演示如何用java实现分页的功能的类!
💻 JAVA
字号:
package webbook.chapter18;
import java.util.List;
import org.apache.commons.dbutils.handlers.*;
import org.apache.commons.dbutils.*;
import webbook.util.OracleUtil;
import java.sql.*;
import java.util.regex.*;

public class OraclePagination implements Pagination {
	private int pageSize = 20;
	private int pageNumber = 1;
	private int maxPages;
	private int maxElements;

	private String sql;
	private OracleUtil db;

	public OraclePagination(String sql) {
		this.sql = sql;
		init();
	}
	
	public OraclePagination(String sql, int pageSize, int pageNumber) {
		this.sql = sql;
		this.pageSize = pageSize;		
		init();
		setPageNumber(pageNumber);
	}

	private void init() {
		db = new OracleUtil("java:/comp/env/jdbc/oracleds");
		db.init();
		setMaxElements();
		setMaxPages();
	}	

	private void setPageNumber(int pageNumber) {
		if (pageNumber > maxPages) {
			this.pageNumber = maxPages;
		}else if (pageNumber < 1) {
			this.pageNumber = 1; 
		}else {
			this.pageNumber = pageNumber;
		}
	}

	private void setMaxElements() {
		String regex = "select((.)+)from";
		Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
		String[] s = p.split(this.sql);
	    String newSql = "select count(1) as total from " + s[1];

		ResultSetHandler handler = new ResultSetHandler() {
			public Object handle(ResultSet rs) throws SQLException {
				if (rs.next()) {
					return new Integer(rs.getInt("total"));
				} else {
					return null;
				}
			}
		};
		this.maxElements = ((Integer) db.query(newSql, null, handler)).intValue();	
	}

	public int getMaxElements() {
		return maxElements;
	}

	private void setMaxPages() {
		if (maxElements != 0 && (maxElements % pageSize == 0)) {
			maxPages = maxElements / pageSize;
		} else {
			maxPages = maxElements / pageSize + 1;
		}	
	}

	public String sqlModify(String source, int begin, int end) {
		StringBuffer target = new StringBuffer(100);
		target.append("select * from ( select a.*, rownum r from ( ");
		target.append(sql);
		target.append(" ) a where rownum <= ");
		target.append(end);
		target.append(") where r>");
		target.append(begin);
		return target.toString();
	}	

		public int getMaxPages() {
		return maxPages;
	}

	public int getNext() {
		if (pageNumber + 1 >= getMaxPages()) {
			return getMaxPages();
		} else {
			return pageNumber + 1;
		}
	}	
	
	public int getEndElement() {
		int endElement = pageNumber * pageSize;
		if (endElement >= maxElements) {
			return maxElements;
		} else {
			return endElement;
		}
	}
	
	public int getBeginElement() {
		return (pageNumber - 1) * pageSize + 1;
	}
	

	public List<Object> getList() {
		String newSql = sqlModify(this.sql, getBeginElement(), getEndElement());
		return (List) db.query(newSql, null, new MapListHandler());
	}

	public int getPageNumber() {
		return pageNumber;
	}

	public int getPageSize() {
		return pageSize;
	}

	public int getPrevious() {
		if (pageNumber - 1 <= 1) {
			return 1;
		} else {
			return pageNumber - 1;
		}
	}

	public boolean hasNext() {
		return pageNumber < getMaxPages();
	}

	public boolean hasPrevious() {
		return pageNumber > 1;
	}

	public boolean isFirst() {
		return pageNumber == 1;
	}

	public boolean isLast() {
		return pageNumber >= getMaxPages();
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -