2022年通常使用的Hibernate通常是三种查询及调用 .pdf
《2022年通常使用的Hibernate通常是三种查询及调用 .pdf》由会员分享,可在线阅读,更多相关《2022年通常使用的Hibernate通常是三种查询及调用 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、相关文章 : SSH通用查询 DAO(2)应用 Hibernate3 的 DetachedCriteria实现分页查询基于 spring 与 hibernate的通用分页实现推荐圈子 : GT-Grid更多相关推荐通常使用的 Hibernate 通常是三种: hql 查询, QBC 查询和 QBE 查询:1、QBE (Qurey By Example )检索方式QBE 是最简单的,但是功能也是最弱的,QBE 的功能不是特别强大,仅在某些场合下有用。一个典型的使用场合就是在查询窗口中让用户输入一系列的查询条件,然后返回匹配的对象。QBE 只支持 =和 like比较运算符,无法不大区间值,及其或的
2、匹配。在这种情况下,还是采用HQL检索方式或 QBC 检索方式。Java 代码1. /* 2. * function 根据传递过来的 Object, 分页显示在数据库中与其匹配的记录3. * param pageNo 4. * 当前页数5. * param pageSize 6. * 每页显示的记录数7. * param object 8. * 将查询条件封装为Object 9. * return 将查询结果封装为Pager 返回10. */ 11.public Pager findPageByExample(int pageNo, int pageSize, Object object) 1
3、2. 13. Pager pager = null; 14. try 15. 16. Criteria criteria = this.getSession().createCriteria( 17. Class.forName(this.getEntity(); 18. 19. if (object != null) 20. 21. criteria.add(Example.create(object).enableLike(); 22. 23. 24. / 获取根据条件分页查询的总行数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -
4、- - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 25. int rowCount = (Integer) criteria.setProjection( 26. Projections.rowCount().uniqueResult(); 27. criteria.setProjection(null); 28. 29. criteria.setFirstResult(pageNo - 1) * pageSize); 30. criteria.setMaxResults(pageSize); 31. 32. List result
5、 = criteria.list(); 33. 34. pager = new Pager(pageSize, pageNo, rowCount, result); 35. 36. catch (RuntimeException re) 37. 38. throw re; 39. finally 40. 41. return pager; 42. 43. 44. 注意代码的第 20 行, 即 criteria.add(Example.create(object).enableLike();这一行,需将 Example.create(object)调用.enableLike()方法,不然不能模糊
6、查询。在 BO层将需要模糊查询的列用 % 串起来,不然仍然和 = 一样。BO层代码:Java 代码1. /* 2. * function 将传递过来的参数封装成抢修人员Bean ,分页查询符合条件的记录3. * param pageNo 4. * 当前的页码5. * param pageSize 6. * 每页显示的记录数7. * param mendName 8. * 抢修人员的名称9. * param specialty 10. * 抢修人员的工种11. * param post 12. * 抢修人员的职称13. * return 将符合条件的记录数以及页码信息封装成PagerBean返回
7、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - 14. */ 15.public Pager getInfoByQuery(int pageNo, int pageSize, String mendName, 16. String specialty, String post) 17. 18. 19. EicMend eicMend = new EicMend(); 20. if (mendName != null & men
8、dName.length() 0) 21. 22. eicMend.setMendname(% + mendName + %); 23. 24. if (specialty != null & specialty.length() 0) 25. 26. eicMend.setSpecialty(specialty); 27. 28. if (post != null & post.length() 0) 29. 30. eicMend.setPost(post); 31. 32. 33. Pager pager = erpManagerDao 34. .findPageByExample(pa
9、geNo, pageSize, eicMend); 35. return pager; 36. 执行 SQL语句如下:Sql 代码1. Hibernate: select count (*) as y0_ from YJZX.EIC_MEND this_ where 2. (this_.MENDNAME like ? and this_.POST like ?) 3.4. Hibernate: select * from ( select this_.MENDID as MENDID23_0_, , 5. this_.EXPERTREMARK as EXPERTR28_23_0_ from Y
10、JZX.EIC_MEND this_ where 6. (this_.MENDNAME like ? and this_.POST like ?) ) where rownum = ? 所以只需将需模糊查询的列用“% ”链接即可。2、QBC (Qurey By Criteria)检索方式采用 HQL检索方式时,在应用程序中需要定义基于字符串形式的HQL查名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - 询语句。 QBC API提
11、供了检索对象的另一种方式,它主要由Criteria接口、Criterion接口和 Restrictions接口组成, 它支持在运行时动态生成查询语句。比较常见的是两种传参方式:一种是用map传参,另一种是用Cri terion,不定参数传参。Map传参方式范例如下:DAO 层:Java 代码1. /* 2. * function 分页显示符合所有的记录数,将查询结果封装为Pager 3. * param pageNo 4. * 当前页数5. * param pageSize 6. * 每页显示的条数7. * param map 8. * 将查询条件封装为map 9. * return 查询结果
12、 Pager 10. */ 11.public Pager findPageByCriteria(int pageNo, int pageSize, Map map) 12. 13. Pager pager = null; 14. try 15. 16. Criteria criteria = this.getSession().createCriteria( 17. Class.forName(this.getEntity(); 18. 19. if (map != null) 20. 21. Set keys = map.keySet(); 22. for (String key : ke
13、ys) 23. 24. criteria.add(Restrictions.like(key, map.get(key); 25. 26. 27. 28. / 获取根据条件分页查询的总行数29. int rowCount = (Integer) criteria.setProjection( 30. Projections.rowCount().uniqueResult(); 31. criteria.setProjection(null); 32. 33. criteria.setFirstResult(pageNo - 1) * pageSize); 名师资料总结 - - -精品资料欢迎下
14、载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - 34. criteria.setMaxResults(pageSize); 35. 36. List result = criteria.list(); 37. 38. pager = new Pager(pageSize, pageNo, rowCount, result); 39. 40. catch (RuntimeException re) 41. 42. throw re; 43. finally 44.
15、45. return pager; 46. 47. 48. Map传参方式对应 BO层代码:Java 代码1. /* 2. * function 将传递过来的参数封装成抢修人员Bean ,分页查询符合条件的记录3. * param pageNo 4. * 当前的页码5. * param pageSize 6. * 每页显示的记录数7. * param mendName 8. * 抢修人员的名称9. * param specialty 10. * 抢修人员的工种11. * param post 12. * 抢修人员的职称13. * return 将符合条件的记录数以及页码信息封装成PagerBe
16、an返回14. */ 15.public Pager getInfoByQuery2(int pageNo, int pageSize, String mendName, 16. String specialty, String post) 17. 18. 19. Map map = new HashMap(); 20. 21. if (mendName != null & mendName.length() 0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页
17、 - - - - - - - - - 22. 23. map.put(mendname, % + mendName + %); 24. 25. if (specialty != null & specialty.length() 0) 26. 27. map.put(specialty, specialty); 28. 29. if (post != null & post.length() 0) 30. 31. map.put(post, post); 32. 33. 34. Pager pager = erpManagerDao.findPageByCriteria(pageNo, pag
18、eSize, map); 35. return pager; 36. 第二种方式: Criterion,不定参数传参方式。其代码如下所示:DAO 层代码:Java 代码1. /* 2. * function 分页显示符合所有的记录数,将查询结果封装为Pager 3. * param pageNo 4. * 当前页数5. * param pageSize 6. * 每页显示的条数7. * param criterions 8. * 不定参数 Criterion 9. * return 查询结果 Pager 10. */ 11.public Pager findPageByCriteria(int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年通常使用的Hibernate通常是三种查询及调用 2022 通常 使用 Hibernate 是三种 查询 调用
限制150内