- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hibernate查询详解
Hibernate查询 首先介绍get()和load()方法的区别: get()方法和load()方法的区别主要在于对二级缓存的使用上。 load()方法会使用二级缓存,而get()方法在一级缓存没有找到会直接查询数据库,不会去二级缓存中查找。 get():如果在数据库中没有记录会返回空,get()无论如何都会返回数据. load():如果数据库中没有记录会抛出异常,如果有数据返回的是一个代理对象。 list和iterator()方法之间的区别:(N+1?) list()方法在执行时,直接运行查询结果所需要的查询语句。 iterator()方法则是先执行得到对象ID的查询,然后在根据每个ID值去取得所要查询的对象。 因此:对于list()方式的查询通常只会执行一个SQL语句,而对于iterator()方法的查询则可能需要执行N+1条SQL语句(N为结果集中的记录数). 结果集的处理方法不同: list()方法会一次活的所有的结果集对象,而且他会依据查询的结果初始化所有的结果集对象。如果在结果集非常庞大的时候会占据非常多的内存,甚至会造成内存溢出的情况发生。 iterator()方法在执行时不会一次初始化所有的对象,而是根据对结果集的访问情况来初始化对象。一次在访问中可以控制缓存中对象的数量,以避免占用过多的缓存,导致内存溢出情况的发生。 HQL:HQL是一种面向对象的查询语言,HQL的操作对象是类、实例和属性等。 SQL:sql的操作对象是数据表和列等数据对象。 Hql是完全面向对象的查询语言,因此可以支持继承和多条等特征。 HQL查询依赖于Query类,每个Query实例对应一个查询对象。 定参数的功能,Query 接口才是真正的HQL查询接口。 //创建一个Query 对象
Java代码Query?query?=?session.createQuery?(from?Customer?as?c?where?c.name=:customerName?and?c.age=:customerAge);??
动态绑定参数query.setString(customerName,Tom); ??
query.setInteger(customerAge,21);??
执行查询语句,返回结果List?result?=?query.list();??
HQL查询步骤: 1:获取Hibernate Session对象。 2:编写HQL语句。 3:以HQL语句作为参数,调用Session的createQuery方法创建查询对象。 4:如果HQL语句包含参数,调用Query的setXXX()方法为参数赋值。 5: 调用Query对象的list等方法遍历查询结果。 Query还包含两个方法:
Java代码 ?
setFirstResult(int?firstResult)://设置返回的结果集从第几条记录开始。 ??
setMaxResults(int?maxResults)://设置本次查询返回的结果数。??
setFirstResult(int firstResult)://设置返回的结果集从第几条记录开始。
setMaxResults(int maxResults)://设置本次查询返回的结果数。
实体的删除和更新。 投影查询:只查询属性的一部分。 ?? 查询一个属性返回的是字符串 ?? 查询二个字段返回的是数组 动态构造查询:主要用于几十个表查询; ?????? 要构建一个新的对象,要加上一个构造函数; ? 在new对象的时候要加上包名 不要使用count(*) 要count(持久化对象) 分组与排序: Order by子句可以通过asc或desc关键字排序 ???? 如:
Java代码 ?
form?User?u?Order?by?u.name?asc,u.age?desc;??
form User u Order by u.name asc,u.age desc;
Group by子句与统计查询: 如:
Java代码 ?
String?hql?=?select?count(u),u.age?from?User?u?group?by?u.age?having?count(u)10; ??
?List?list?=?session.createQuery(hql).list();??
String hql = select count(u),u.age from User u group by u.age having count(u)10;
List list = session.createQuery(hql).list();
标准的SQL聚合函
您可能关注的文档
- 四校联考卷07(双明).doc
- 简易2步骤 打造日常烟熏大眼妆.doc
- 打造日常生活妆 快速化出清新大眼,化妆分享淡妆的画法.doc
- 投资人称美国债务上限担忧或创造入市机会.doc
- 心灵塑造人格.doc
- 崔现军,字中仁,简明中医内科.doc
- 浅说袁大头版别.doc
- 矛盾排查化解机制.doc
- 已亥杂诗 清 龚自珍 九州生气恃风雷, 万马齐喑究可哀。 我劝天公重....ppt
- 说的标点跟反问句.pptx
- 场地脚手架工程施工方案(3篇).docx
- 2024年浙江省丽水市松阳县玉岩镇招聘社区工作者真题及参考答案详解一套.docx
- 2024年河南省郑州市惠济区古荥镇招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市淳安县文昌镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省台州市三门县小雄镇招聘社区工作者真题带答案详解.docx
- 2024年浙江省宁波市余姚市河姆渡镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省丽水市景宁畲族自治县雁溪乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市临安市板桥乡招聘社区工作者真题及答案详解一套.docx
- 2024年湖北省宜昌市点军区土城乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省台州市路桥区桐屿街道招聘社区工作者真题附答案详解.docx
文档评论(0)