话不多说,直接上代码
package com.xxx.common.util;
public final class PagerHelper {
/**
* 获得总数的sql语句
* @param sql 原SQL语句
* @return 获得总记录数的SQL语句
*/
public static CharSequence getTotalResultSql(CharSequence sql) {
StringBuilder sb = new StringBuilder();
sb.append("select count(*) from (");
sb.append(sql);
sb.append(") totaltmp");
return sb;
}
/**
* 获得支持分页的SQL语句,注意:原SQL语句一定要有order by,否则分页后可能会不准确
* @param sql 原SQL语句
* @return 可以分页的SQL语句
*/
public static CharSequence getPageSql(CharSequence sql, int currentPage, int showResultNumber) {
int startRow = (currentPage - 1) * showResultNumber;//不含
int endRow = currentPage * showResultNumber;//含
StringBuilder sb = new StringBuilder();
sb.append("SELECT pagerstart.* FROM (SELECT rownum rn, pagerend.* FROM (")
.append(sql)
.append(") pagerend WHERE rownum <= ")
.append(endRow)
.append(") pagerstart WHERE pagerstart.rn > ")
.append(startRow);
return sb;
}
}