[java]代码库/**
* 拼装sql语句,并实现计算分页的相关信息
* @param sql 要查询的sql语句,不含分页,该方法会自动添加分页的信息
* @param CPage 当前需要显示的页码
* @param pageRecord 每一页显示的记录
* @param totalRecord 总记录数目
* @return list 查询出的结果集
* @author chensy
*/
@SuppressWarnings("rawtypes")
public Map queryResultListByPageJDBC(String sql,String CPage,int pageRecord,int totalRecords){
StringBuffer sqlQuery = new StringBuffer();
//1、计算分页的方法
int totalPages;//总页数
int curPage;//当前显示的页码
if(CPage!=null && CPage.length() >0){
curPage = Integer.parseInt(CPage);
if(curPage<1){
curPage = 1;
}
}else{
curPage = 1;
}
if(totalRecords%pageRecord==0){
totalPages = totalRecords/pageRecord;//当每页显示的记录条数能被总记录条数整除时 总页数为总记录条数除以每页显示的记录条数
}else{
totalPages = totalRecords/pageRecord+1;//当每页显示的记录条数不能被总记录条数整除时 总页数为总记录条数除以每页显示的记录条数的商再加1
}
int startPage = (curPage-1)*pageRecord+1;
int endPage = (startPage + pageRecord);
//2、拼接分页查询SQL
sqlQuery.append("select * from (select rownumber() over() as rownumber_,row_.* from (").append(sql).append(")");
sqlQuery.append(" as row_) as temp_");
//继续拼接分页查询SQL,添加分页
sqlQuery.append( " where temp_.rownumber_ between "+startPage+" and "+endPage+"");
//3、查询
Session session = getSession();
Query query = session.createSQLQuery(sqlQuery.toString());
Map rsMap = new HashMap();
rsMap.put("result", query.list());
rsMap.put("totalpages",totalPages);
return rsMap;
}