📄 pagination.java
字号:
package org.jetic.web;import java.sql.ResultSet;import java.sql.Statement;/** * Title: 经天科技 * Description: * Copyright: Copyright (c) 2001 * Company: www.jetic.org 经天 * @author hover * @version 1.0 */public class Pagination { private Statement stmt; private String sql = ""; private String table = ""; private String fields = ""; private int recordcount = 0; private int pagesize = 10; private int pagecount = 0; private int page = 1; private String condition = ""; private boolean direction = true; public Pagination() { } public Pagination(int pagesize) { setPagesize(pagesize); } public Pagination(Statement stmt) { setStmt(stmt); } public String getSql() { String strCondition = ""; String order1, order2; if (condition.length() > 0) strCondition = " WHERE " + condition; // 计算页数 sql = "SELECT COUNT(*) FROM " + table + strCondition; try { ResultSet rs = stmt.executeQuery(sql); if (rs.next()) recordcount = rs.getInt(1); rs.close(); } catch (Exception ex) { ex.printStackTrace(System.err); } if (recordcount < 1) pagecount = 0; else pagecount = (recordcount - 1) / pagesize + 1; if (page < 1) page = 1; else if (page > pagecount) page = pagecount; if (direction) { order1 = " ORDER BY [ID]"; order2 = " ORDER BY [ID] DESC"; } else { order1 = " ORDER BY [ID] DESC"; order2 = " ORDER BY [ID]"; } if (page == 1) { sql = "SELECT TOP " + pagesize + " [ID]" + fields + " FROM " + table + strCondition + order1; } else if (page == pagecount) { /* 顺序: SELECT ... FROM (table) WHERE [ID] IN (SELECT TOP rest [ID] FROM (table) ORDER BY [ID] DESC) ORDER BY [ID] */ int rest; // 最后一页记录数 rest = recordcount % pagesize; if (rest == 0) rest = pagesize; sql = "SELECT [ID]" + fields + " FROM " + table + " WHERE [ID] IN " + "(SELECT TOP " + rest + " [ID] FROM " + table + order2 + ") " + order1; } else { /* 顺序: SELECT ... FROM (table) WHERE [ID] IN (SELECT TOP (pagesize) [ID] FROM (table) WHERE [ID] IN (SELECT TOP (pagesize * page) [ID] FROM (table) WHERE (condition) ORDER BY [ID]) ORDER BY [ID] DESC) ORDER BY [ID] 反序: SELECT ... FROM (table) WHERE ID IN (SELECT TOP (pagesize) ID FROM (table) WHERE ID IN (SELECT TOP (pagesize * page) ID FROM (table) ORDER BY ID DESC) ORDER BY ID) ORDER BY ID DESC */ sql = "SELECT [ID]" + fields + " FROM " + table + " WHERE [ID] IN " + "(SELECT TOP " + pagesize + " [ID] FROM " + table + " WHERE [ID] IN " + "(SELECT TOP " + (pagesize * page) + " [ID] FROM " + table + strCondition + order1 + ")" + order2 + ")" + order1; } return sql; } public String getSql(String table) { this.table = table; return getSql(); } public String getSql(int page) { this.page = page; return getSql(); } public String getSql(String table, int page) { this.table = table; this.page = page; return getSql(); } public String getSql(String table, String condition) { this.table = table; this.condition = condition; return getSql(); } public String getSql(String table, String condition, int page) { this.table = table; this.condition = condition; this.page = page; return getSql(); } public void setTable(String newTable) { table = newTable; } public String getTable() { return table; } public int getRecordcount() { return recordcount; } public void setPagesize(int newPagesize) { pagesize = newPagesize; } public int getPagesize() { return pagesize; } public int getPagecount() { return pagecount; } public void setPage(int newPage) { page = newPage; } public int getPage() { return page; } public void setCondition(String newCondition) { condition = newCondition; } public String getCondition() { return condition; } public void setStmt(Statement newStmt) { stmt = newStmt; } public Statement getStmt() { return stmt; } public void setFields(String newFields) { fields = newFields; } public void setFields(String[] newFields) { fields = ""; for (int i = 0; i < newFields.length; i++) { fields += "," + newFields[i]; } } public String getFields() { return fields; } public void setDirection(boolean newDirection) { direction = newDirection; } public boolean isDirection() { return direction; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -