spring+hibernate+pager taglib实现分页(底层也做了分页)(一)

经过几天业余时间的研究,已经做了一套关于分页的高效解决方案,所谓的高效,就是在数据库底层,也做了分页查询,因此在进行大数据量的查询时,速度会很快。如果不做底层的分页的话,数据量超过5W,速度将会慢的象乌龟一样。

  这套解决方案,是按照MVC的模式来做的,基于STRUTS框架。分为三个部分,表现层用的是JSP,其中用了JSTLpager taglib做分页;控制层就是用的很传统的Action底层就用的是Spring+Hibernate。下面分三个部分慢慢说:

  一、底层:

  底层是基于Spring+Hibernate来做的。在DAO这一层,为其增加两个方法,一个方法为根据HQL语句和条件进行查询,另外一个方法为根据HQL语句、条件、开始的记录位置,共显示的记录数进行分页查询。底层的分页查询用的是Hibernate提供的分页查询。

  方法体如下所示: OK,底层的工作就做完了!

java 代码
  1. publicListfindByCondition(Stringsql,Object[]parems){
  2. Listresult=newArrayList();
  3. try{
  4. result=getHibernateTemplate().find(sql,parems);
  5. }catch(RuntimeExceptionre){
  6. re.printStackTrace();
  7. }
  8. returnresult;
  9. }
  10. publicListfindByCondition(Stringsql,Object[]parems,intfirst,intmax){
  11. Listresult=newArrayList();
  12. try{
  13. Sessionsess=getSession();
  14. Queryquery=sess.createQuery(sql);
  15. for(inti=0;i
  16. if(parems[i]instanceofInteger){
  17. query.setInteger(i,((Integer)parems[i]).intValue());
  18. }
  19. if(parems[i]instanceofString){
  20. query.setString(i,parems[i].toString());
  21. }
  22. }
  23. query.setFirstResult(first);
  24. query.setMaxResults(max);
  25. result=query.list();
  26. }catch(RuntimeExceptionre){
  27. re.printStackTrace();
  28. }
  29. returnresult;
  30. }

你可能感兴趣的:(spring,sql,mvc,Hibernate,struts)