最经典的hibernate教程,从入门到精通,cstp-hibernate04(第四篇,共四篇)_第1页
最经典的hibernate教程,从入门到精通,cstp-hibernate04(第四篇,共四篇)_第2页
最经典的hibernate教程,从入门到精通,cstp-hibernate04(第四篇,共四篇)_第3页
最经典的hibernate教程,从入门到精通,cstp-hibernate04(第四篇,共四篇)_第4页
最经典的hibernate教程,从入门到精通,cstp-hibernate04(第四篇,共四篇)_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七章,Hibernate查询,回顾,写出下面两个类的Hibernate配置文件,注意关联的配置。,/订单实体类public class Order private long orderId ; private String customerName; private java.sql.Date orderDate; /setters & getters .,/订单明细实体类public class OrderLine private long lineId ; private Order order; private String productName; private long count; /setters & getters .,预习检查,Hibernate支持哪两种查询?HQL是什么?,本章任务,使用Hibernate实现,房屋查询DAO对title模糊查询对街道精确查询对租金使用一个范围查询查询特定联系人都在哪些街道发布了信息提供分页查询方法,本章目标,掌握HQL查询掌握Criteria查询,为什么使用HQL,如何使用Hibernate查询所有房屋信息?,SQL语句:select * from tbl_fwxx,HQL,Hibernate Query LanuageHibernate查询语言,?,如何使用HQL,使用HQL的四步,1、得到Session,2、编写HQL语句,3、创建Query,4、执行查询,1,2,3,4,from TblFwxx,from关键字,类似于SQL语句,实体类名,而不是数据库表名,可以没有select子句,如何使用HQL,类似SQL SELECT语句,可以使用表的别名,select fw from TblFwxx as fw,表的别名,as可以省略,HQL是面向对象的查询语言。select fw表示查询fw对象,执行结果与from TblFwxx相同,常见错误,下面代码中有什么错误,怎么更正?,tbl_fwxx是表名。HQL是对象查询语言,应该是类名:TblFwxx,常见错误,下面代码中有什么错误,怎么更正?,类名是区分大小写的。应该是TblFwxx。,但SELECT、FROM等关键字是不区分大小写的。,属性查询,select fw from TblFwxx fw将查询整个对象信息,我们只想查询date和title怎么做?,select fw.title, fw.date from TblFwxx fw,每条数据封装成一个Object数组,查询结果仍保存在list中,?,小结,实现QxDAO接口:,public interface QxDAOpublic List listAllQx();,参数查询,如何实现:根据title模糊查询房屋信息?,select fw from TblFwxx fw where fw.title like %健翔桥%,where子句,支持like关键字,支持%通配符,这样拼装HQL字符串容易带来安全隐患,?,参数查询,HQL提供类似preparedStatement的参数查询,以?为占位符,设置参数的值,Query提供setLong,setDouble,setDate等方法用于设置不同类型的参数值,注意:1. 必须保证:query设置参数的数目 = hql语句中占位符的数目2. 占位符下标从 0 开始。,参数查询,查询租金在zj1到zj2范围内的租房信息:public List searchByZj(int zj1, int zj2)。,public List searchByZj(int zj1, int zj2)Session session = this.getSession();String hql = from TblFwxx fw +where fw.zj = ? and fw.zj 、= 、 和is null;and、or、not和括号;in和between,使用between关键字上面的hql语句怎么写?,当参数数目增多的时候,上面的代码会带来什么问题?,当参数数目增多时,代码可读性下降;将下标顺序硬编码,参数顺序有调整则代码也要调整,参数查询:命名参数,查询租金在zj1到zj2范围内的租房信息。,使用“:参数名”的格式定义命名参数,设定命名参数的值,小结,根据房屋类型查询:public List searchByJd(int jdId);,提示:.where fw.jd.jdid = ?或者.where fw.jd.jdid = :jdid,关联查询,查询:联系人为“伊先生”的房屋信息都分布在哪些街道。,从两类对象中检索数据,设置关联条件。注意:jd是对象。,生成的SQL语句,小结,写出HQL语句:查询“亚运村”街道的房屋信息中,涉及的房屋类型。,提示:亚运村街道的房屋信息: fw.jd.jdid=39,分页查询,实现分页查询方法:public List search(int pageNo, int pageSize) 。,使用order by对结果排序,分页代码,统计函数,在实现分页功能时,我们需要知道总记录数以便计算总页数。,使用count()函数,当结果只有一条记录时,可以使用uniqueResult()得到结果,可以使用的函数还有:min()、max()、avg(),小结,写出程序代码:1、根据租金排序,查询从高到低前10条记录。2、查询朝阳区房屋租金的平均值。,String hql = from TblFwxx fw order by fw.zj desc;.query.setFirstResult(0);query.setMaxResult(10);,String hql = select avg(fw.zj) from TblFwxx fw + +where fw.jd. tblQx.qx=朝阳区;.double avgZj = (Double)query.uniqueResult();,对象查询,使用一个查询方法,同时支持三项功能:对title模糊查询对房屋类型精确查询对租金使用一个范围查询,public List search(TblFwxx condition)String hql = select fw from TblFwxx fw hql += where 1=1 ;if (condition.getTitle()!=null)hql += and fw.title like % + condition.getTitle() + % ;.,代码啰嗦,不易维护,不方便使用参数查询,安全性和执行效率不好,使用Criteria查询代码更简洁,使用Criteria查询,以对象的方式构建查询,创建Criteria对象,模糊查询,大于等于 和 小于等于,支持in和between,数组类型,支持类似EL表达式的属性浏览语法,可以增加多个排序规则,使用Criteria查询,测试程序和运行效果,生成的SQL语句:Hibernate: select this_.fwid as fwid1_0_, this_.uid as uid1_0_, this_.jdid as jdid1_0_, this_.lxid as lxid1_0_, this_.shi as shi1_0_, this_.ting as ting1_0_, this_.fwxx as fwxx1_0_, this_.zj as zj1_0_, this_.title as title1_0_, this_.date as date1_0_, this_.telephone as telephone1_0_, this_.lxr as lxr1_0_ from TBL_FWXX this_ where this_.title like ? and this_.zj=? and this_.zj=? and this

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论