private Page listPage(int pageNo,int pageSize,long days)
{
/**
* select a.blg_id, sum(visit_times) as visit_times from T_Blg_Daily_Sum a
* where 1=1
* group by a.blg_id order by visit_times desc
*/
StringBuffer sb = new StringBuffer("");
sb.append(" select new Map(a.TBlgMain as TBlgMain, sum(a.visitTimes) as visitTimes) from TBlgDailySum a where 1=1 ");
if(days>0)
{
Date startDay = new Date(new Date().getTime() - days * 24 * 60 * 60 * 1000);
SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
sb.append(" and to_char(a.recordDate,'yyyyMMdd') > " + f.format(startDay));
sb.append(" and to_char(a.recordDate,'yyyyMMdd') <= " + f.format(new Date()));
}
sb.append(" group by a.TBlgMain.blgId ");
sb.append(" order by sum(a.visitTimes) desc ");
Session session = hibernateTemplate.getSessionFactory().getCurrentSession();
Query query = session.createQuery(sb.toString());
query.setFirstResult(pageSize*(pageNo-1));
query.setMaxResults(pageSize);
List list = query.list();
String countString = null;
int start = sb.indexOf("from");
int end = sb.indexOf("order by");
countString =" select count(*) as count "+ sb.substring(start, end);
query = session.createQuery(countString);
int count = query.list().size();
return new Page(count,list);
}