长腮的北极熊 2016-02-03 06:53 采纳率: 0%
浏览 1334
已结题

Hibernate分页效率问题

项目中使用了公司封装的数据库操作jar,但Hibernate分页效率总是不高,怀疑底层是先查后分页的情况,底子不好 各位大神劳烦看下 是先查询后分的页吗?(请先回答此问题)
有什么优化建议没?
sqlstr 为sql语句,mapps为条件

  public Map getList(String sqlstr, Map mapps, int iPageNo, int iPageSize) throws DAOException

{
HibernateCallback callback = new HibernateCallback(this, sqlstr, mapps, iPageNo, iPageSize) { final HibernatePersistenceManager this$0;
private final String val$sqlstr;
private final Map val$mapps;
private final int val$iPageNo;
private final int val$iPageSize;

  public Object doInHibernate() throws HibernateException, SQLException { Query query = this.this$0.getHibernateTemplate().createQuery(session, 
      this.val$sqlstr);
    List list = new ArrayList();

    if ((this.val$mapps != null) && (!(this.val$mapps.isEmpty()))) {
      Iterator it = this.val$mapps.keySet().iterator();
      while (it.hasNext()) {
        String numStr = (String)it.next();
        int num = Integer.parseInt(numStr);
        query.setParameter(num, this.val$mapps.get(numStr));
      }

    }

    this.this$0.setPageNo(this.val$iPageNo);
    this.this$0.setPageSize(this.val$iPageSize);
    if ((this.val$mapps != null) && (!(this.val$mapps.isEmpty())))
      this.this$0.setQueryPage(query, this.val$mapps);
    else
      this.this$0.setQueryPage(query);

    list = query.list();

    Map map = new HashMap();

    map.put("RecTotal", this.this$0.getRecTotal());
    map.put("PageTotal", this.this$0.getPageTotal());
    map.put("List", list);

    return map;
  }

};
return ((Map)getHibernateTemplate().execute(callback));

}

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-02-03 14:35
    关注

    服务器端分页用存储过程,hibernate绑定
    参考:http://www.docin.com/p-660794652.html

    评论

报告相同问题?

悬赏问题

  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了