ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:23.68KB ,
资源ID:6303894      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6303894.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Hibernate分页查询小结.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Hibernate分页查询小结.docx

1、Hibernate分页查询小结通常使用的Hibernate通常是三种:hql查询,QBC查询和QBE查询:1、QBE(Qurey By Example)检索方式QBE是最简单的,但是功能也是最弱的,QBE的功能不是特别强大,仅在某些场合下有用。一个典型的使用场合就是在查询窗口中让用户输入一系列的查询条件,然后返回匹配的对象。QBE只支持=和like比较运算符,无法不大区间值,及其或的匹配。在这种情况下,还是采用HQL检索方式或QBC检索方式。Java代码1. /*2. *function根据传递过来的Object,分页显示在数据库中与其匹配的记录3. *parampageNo4. *当前页数5

2、. *parampageSize6. *每页显示的记录数7. *paramobject8. *将查询条件封装为Object9. *return将查询结果封装为Pager返回10. */11. publicPagerfindPageByExample(intpageNo,intpageSize,Objectobject)12. 13. Pagerpager=null;14. try15. 16. Criteriacriteria=this.getSession().createCriteria(17. Class.forName(this.getEntity();18. 19. if(objec

3、t!=null)20. 21. criteria.add(Example.create(object).enableLike();22. 23. 24. /获取根据条件分页查询的总行数25. introwCount=(Integer)criteria.setProjection(26. Projections.rowCount().uniqueResult();27. criteria.setProjection(null);28. 29. criteria.setFirstResult(pageNo-1)*pageSize);30. criteria.setMaxResults(pageSi

4、ze);31. 32. Listresult=criteria.list();33. 34. pager=newPager(pageSize,pageNo,rowCount,result);35. 36. catch(RuntimeExceptionre)37. 38. throwre;39. finally40. 41. returnpager;42. 43. 44. 注意代码的第20行,即criteria.add(Example.create(object).enableLike();这一行,需将Example.create(object)调用.enableLike()方法,不然不能模糊查

5、询。在BO层将需要模糊查询的列用%串起来,不然仍然和=一样。BO层代码:Java代码1. /*2. *function将传递过来的参数封装成抢修人员Bean,分页查询符合条件的记录3. *parampageNo4. *当前的页码5. *parampageSize6. *每页显示的记录数7. *parammendName8. *抢修人员的名称9. *paramspecialty10. *抢修人员的工种11. *parampost12. *抢修人员的职称13. *return将符合条件的记录数以及页码信息封装成PagerBean返回14. */15. publicPagergetInfoByQue

6、ry(intpageNo,intpageSize,StringmendName,16. Stringspecialty,Stringpost)17. 18. 19. EicMendeicMend=newEicMend();20. if(mendName!=null&mendName.length()0)21. 22. eicMend.setMendname(%+mendName+%);23. 24. if(specialty!=null&specialty.length()0)25. 26. eicMend.setSpecialty(specialty);27. 28. if(post!=nu

7、ll&post.length()0)29. 30. eicMend.setPost(post);31. 32. 33. Pagerpager=erpManagerDao34. .findPageByExample(pageNo,pageSize,eicMend);35. returnpager;36. 执行SQL语句如下:Sql代码1. Hibernate:selectcount(*)asy0_fromYJZX.EIC_MENDthis_where2. (this_.MENDNAMElike?andthis_.POSTlike?)3. 4. Hibernate:select*from(sele

8、ctthis_.MENDIDasMENDID23_0_,5. this_.EXPERTREMARKasEXPERTR28_23_0_fromYJZX.EIC_MENDthis_where6. (this_.MENDNAMElike?andthis_.POSTlike?)whererownum=?所以只需将需模糊查询的列用“%”链接即可。2、QBC(Qurey By Criteria)检索方式 采用HQL检索方式时,在应用程序中需要定义基于字符串形式的HQL查询语句。QBC API提供了检索对象的另一种方式,它主要由Criteria接口、Criterion接口和Restrictions接口组成,

9、它支持在运行时动态生成查询语句。比较常见的是两种传参方式:一种是用map传参,另一种是用Criterion不定参数传参。Map传参方式范例如下:DAO层:Java代码1. /*2. *function分页显示符合所有的记录数,将查询结果封装为Pager3. *parampageNo4. *当前页数5. *parampageSize6. *每页显示的条数7. *parammap8. *将查询条件封装为map9. *return查询结果Pager10. */11. publicPagerfindPageByCriteria(intpageNo,intpageSize,Mapmap)12. 13.

10、Pagerpager=null;14. try15. 16. Criteriacriteria=this.getSession().createCriteria(17. Class.forName(this.getEntity();18. 19. if(map!=null)20. 21. Setkeys=map.keySet();22. for(Stringkey:keys)23. 24. criteria.add(Restrictions.like(key,map.get(key);25. 26. 27. 28. /获取根据条件分页查询的总行数29. introwCount=(Integer

11、)criteria.setProjection(30. Projections.rowCount().uniqueResult();31. criteria.setProjection(null);32. 33. criteria.setFirstResult(pageNo-1)*pageSize);34. criteria.setMaxResults(pageSize);35. 36. Listresult=criteria.list();37. 38. pager=newPager(pageSize,pageNo,rowCount,result);39. 40. catch(Runtime

12、Exceptionre)41. 42. throwre;43. finally44. 45. returnpager;46. 47. 48. Map传参方式对应BO层代码:Java代码1. /*2. *function将传递过来的参数封装成抢修人员Bean,分页查询符合条件的记录3. *parampageNo4. *当前的页码5. *parampageSize6. *每页显示的记录数7. *parammendName8. *抢修人员的名称9. *paramspecialty10. *抢修人员的工种11. *parampost12. *抢修人员的职称13. *return将符合条件的记录数以及页

13、码信息封装成PagerBean返回14. */15. publicPagergetInfoByQuery2(intpageNo,intpageSize,StringmendName,16. Stringspecialty,Stringpost)17. 18. 19. Mapmap=newHashMap();20. 21. if(mendName!=null&mendName.length()0)22. 23. map.put(mendname,%+mendName+%);24. 25. if(specialty!=null&specialty.length()0)26. 27. map.put

14、(specialty,specialty);28. 29. if(post!=null&post.length()0)30. 31. map.put(post,post);32. 33. 34. Pagerpager=erpManagerDao.findPageByCriteria(pageNo,pageSize,map);35. returnpager;36. 第二种方式:Criterion不定参数传参方式。其代码如下所示:DAO层代码:Java代码1. /*2. *function分页显示符合所有的记录数,将查询结果封装为Pager3. *parampageNo4. *当前页数5. *pa

15、rampageSize6. *每页显示的条数7. *paramcriterions8. *不定参数Criterion9. *return查询结果Pager10. */11. publicPagerfindPageByCriteria(intpageNo,intpageSize,12. Criterion.criterions)13. 14. Pagerpager=null;15. try16. 17. Criteriacriteria=this.getSession().createCriteria(18. Class.forName(this.getEntity();19. if(crite

16、rions!=null)20. 21. for(Criterioncriterion:criterions)22. 23. if(criterion!=null)24. 25. criteria.add(criterion);26. 27. 28. 29. 30. 31. /获取根据条件分页查询的总行数32. introwCount=(Integer)criteria.setProjection(33. Projections.rowCount().uniqueResult();34. criteria.setProjection(null);35. 36. criteria.setFirst

17、Result(pageNo-1)*pageSize);37. criteria.setMaxResults(pageSize);38. 39. Listresult=criteria.list();40. 41. pager=newPager(pageSize,pageNo,rowCount,result);42. 43. catch(RuntimeExceptionre)44. 45. throwre;46. finally47. 48. returnpager;49. 50. 51. Criterion不定参数传参方式对应BO层代码:Java代码1. /*2. *function将传递过来

18、的参数封装成抢修人员Bean,分页查询符合条件的记录3. *parampageNo4. *当前的页码5. *parampageSize6. *每页显示的记录数7. *parammendName8. *抢修人员的名称9. *paramspecialty10. *抢修人员的工种11. *parampost12. *抢修人员的职称13. *return将符合条件的记录数以及页码信息封装成PagerBean返回14. */15. publicPagergetInfoByQuery3(intpageNo,intpageSize,StringmendName,16. Stringspecialty,Str

19、ingpost)17. 18. Criterioncriterion1=null,criterion2=null,criterion3=null;19. if(mendName!=null&mendName.length()0)20. 21. criterion1=Restrictions.ilike(mendname,mendName,22. MatchMode.ANYWHERE);23. 24. 25. if(specialty!=null&specialty.length()0)26. 27. criterion2=Restrictions.ilike(specialty,special

20、ty,28. MatchMode.EXACT);29. 30. 31. if(post!=null&post.length()0)32. 33. criterion3=Restrictions.ilike(post,post,MatchMode.EXACT);34. 35. 36. Pagerpager=erpManagerDao.findPageByCriteria(pageNo,pageSize,37. criterion1,criterion2,criterion3);38. 39. returnpager;40. 3、HQL检索方式HQL(Hibernate Query Languag

21、e)是面向对象的查询语言,它和SQL查询语言有些相识。在Hibernate提供的各种检索方式中,HQL是使用最广的一种检索方式。使用Query接口分页查询DAO代码:Java代码1. /*2. *function分页显示符合所有的记录数,将查询结果封装为Pager3. *parampageNo4. *当前页数5. *parampageSize6. *每页显示的条数7. *paraminstance8. *将查询条件封装为专家Bean9. *return查询结果Pager10. */11. publicListfindPageByQuery(intpageNo,intpageSize,Strin

22、ghql,12. Mapmap)13. 14. Listresult=null;15. try16. 17. Queryquery=this.getSession().createQuery(hql);18. 19. Iteratorit=map.keySet().iterator();20. while(it.hasNext()21. 22. Objectkey=it.next();23. query.setParameter(key.toString(),map.get(key);24. 25. 26. query.setFirstResult(pageNo-1)*pageSize);27. query.setMaxResults(pageSize);28. 29. result=query.list();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1