记得注入SessionFactory:
@Autowired private SessionFactory sessionFactory;
普通列表查询如下:
public List<Object[]> statisticByYear(Integer year,Integer siteId,
String statisticType,String statisticValue,
boolean groupByMonth,Integer orderBy){
StringBuffer sb = new StringBuffer();
sb.append("select sum(pv) as pv,sum(ip) as ip,sum(vs) as vs,sum(vsa*vs)/sum(vs) as second,TO_CHAR(to_date(month_,'YYYY-MM'),'MM') as month_ from " +
"(select max(bean.pv) pv,max(bean.ip) ip,max(bean.visitors) vs,max(bean.visit_second_aver) vsa,to_char(bean.statistic_date,'YYYY-MM-DD') month_ " +
" from jmy_site_access_statistic bean where bean.site_id =:siteId and year(bean.statistic_date)=:year and bean.statisitc_type =:statisitcType " );
if(StringUtils.isNotBlank(statisticValue)){
sb.append("and bean.statistic_column_value=:statisticColumnValue");
}
sb.append("group by to_char(bean.statistic_date,'YYYY-MM-DD') )t group by TO_CHAR(to_date(month_,'YYYY-MM'),'MM')");
if(orderBy!=null){
if(orderBy==0){
sb.append(" order by sum(pv) desc");
}else if(orderBy==1){
sb.append(" order by sum(ip) desc");
}else if(orderBy==2){
sb.append(" order by (sum(vsa*vs)/sum(vs)) desc");
}else if(orderBy==3){
sb.append(" order by TO_CHAR(to_date(month_,'YYYY-MM'),'YYYY-MM') asc");
}
}
Query query = sessionFactory.getCurrentSession().createSQLQuery(sb.toString())
.addScalar("pv", StandardBasicTypes.LONG)
.addScalar("ip", StandardBasicTypes.LONG)
.addScalar("vs", StandardBasicTypes.LONG)
.addScalar("second", StandardBasicTypes.LONG)
.addScalar("month_", StandardBasicTypes.STRING);
//设置第一个参数的值为12,即查询ID=12的note
query.setParameter("siteId", siteId);
query.setParameter("year", year);
query.setParameter("statisitcType", statisticType);
if(StringUtils.isNotBlank(statisticValue)){
query.setParameter("statisticColumnValue", statisticValue);
}
List list = query.list();
return list;
}
分页列表查询如下:
public Pagination getPage(Integer siteId, int pageNo, int pageSize) {
StringBuffer sb1 = new StringBuffer();
sb1.append("select jge.guestbook_id as id,jge.title,jge.content,jge.reply,jge.email,jge.phone,jge.qq,jge.name ");
sb1.append("from jmy_guestbook jg,jmy_guestbook_ext jge where jg.guestbook_id = jge.guestbook_id and jg.site_id = :siteId");
Query query = sessionFactory.getCurrentSession().createSQLQuery(sb1.toString());
query.setParameter("siteId",siteId);
query.setFirstResult((pageNo-1)*pageSize);
query.setMaxResults(pageSize);
//列表数据
//List list = query.list();
//List<CmsGuestbookExt> list = query.setResultTransformer(Transformers.aliasToBean(CmsGuestbookExt.class)).list();
List<CmsGuestbookExt> list = query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(CmsGuestbookExt.class)).list();
StringBuffer sb2 = new StringBuffer();
sb2.append("select count(1) from jmy_guestbook jg,jmy_guestbook_ext jge where jg.guestbook_id = jge.guestbook_id and jg.site_id = :siteId");
query = sessionFactory.getCurrentSession().createSQLQuery(sb2.toString());
query.setParameter("siteId",siteId);
BigInteger count = (BigInteger) query.uniqueResult();
//封装成Page类型
Pagination paginationage = new Pagination();
paginationage.setList(list);
paginationage.setPageNo(pageNo);
paginationage.setPageSize(pageSize);
paginationage.setTotalCount(count.intValue());
return paginationage;
}
Controller类调用分页方法:
Pagination page = manager.getPage(site.getId(), pageNo, pageSize); int totalCount = page.getTotalCount(); List<CmsGuestbook> list = (List<CmsGuestbook>) page.getList(); net.sf.json.JSONArray jsonArray = net.sf.json.JSONArray.fromObject(list); String message = Constants.API_MESSAGE_SUCCESS; String code = ResponseCode.API_CODE_CALL_SUCCESS; String body = jsonArray.toString()+",\"totalCount\":"+totalCount; ApiResponse apiResponse = new ApiResponse(request, body, message, code); ResponseUtils.renderApiJson(response, request, apiResponse);