花生丶 2017-07-28 01:40 采纳率: 33.3%
浏览 1273
已结题

hibernate 分页查询优化,求高手帮忙看看,现在6万多条数据都比较慢了~

后台hibernate分页代码:
Page pages = new MyPage(5);
int pageNo;
if (request.getParameter("pageNo") == null) {
pageNo = 1;
} else {
pageNo = Integer.parseInt(request.getParameter("pageNo"));
}
pages.setPageNo(pageNo);
pages.setPageSize(5);

String key = request.getParameter("key");
model.addAttribute("key", key);

String type = request.getParameter("type");
model.addAttribute("type", type);
String sql = "select c.caseno,c.caseapplicant,c.servname,c.deptsimplename,c.casepromisedate,c.casestatus,"

  • "case when c.casestatus not in ('办结','发证','不予许可','退件','已发证') then 1 "
  • "when (select count(a.id) from t_appraise a where a.caseno=c.caseno) > 0 then 2 "
  • "else 3 end from t_casebaseinfo c " + "where 1=1 "; if (StringUtils.isNotBlank(areacode)) { sql += "and c.area_code = '" + areacode + "'"; } if (StringUtils.isNotBlank(key)) { sql += " and (c.caseno = '" + key.trim() + "' or c.caseapplicant like '%"
  • key.trim() + "%')"; }else { sql += " and c.caseno = '默认不显示办件数据'"; } sql += " order by c.caseid desc" ; System.out.println(sql); List ns = new ArrayList(); Query query = null; int totalItems = 0; query = CasebaseService.createSQLQuery(sql); totalItems = query.list().size(); ns = query .setFirstResult((pages.getPageNo() - 1) * pages.getPageSize()) .setMaxResults(pages.getPageSize()).list(); pages.setResult(ns); pages.setTotalItems(totalItems); model.addAttribute("totalItems", totalItems); model.addAttribute("pages", pages);

前台分页部分代码:


  • 写回答

1条回答 默认 最新

  • wuzhiping2017 2017-07-28 23:49
    关注

    你这个sql语句太复杂了,具体能把最后输出的sql截出来吗,我们一起分析一下你的sql语句的性能.

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
  • ¥50 invest生境质量模块
  • ¥15 nhanes加权logistic回归,svyglm函数