Hibernate-5.ppt_第1页
Hibernate-5.ppt_第2页
Hibernate-5.ppt_第3页
Hibernate-5.ppt_第4页
Hibernate-5.ppt_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

Hibernate第五课 大纲 QBCExampleNativeQuery QBC查询 QBC查询是QueryByCriteria的简写 它提供了一种面向对象的检索方式 他将数据的查询条件封装成一个对象 无须以字符串形式定义查询语句 在QBC中 使用Criteria接口来查询 条件由Restrictions定义 排序则以Order指定 Criteria本身只是一个查询容器 具体的查询条件通过调用Criteria的add 方法进行添加 QBC查询 例如 查询年龄大于20的所有姓wang的用户信息 并按年龄升序排序 Listusers session createCriteria User class add Restrictions like name wang add Restrictions gt age 20 addOrder Order asc age list QBC查询 Restrictions 用于生成Criteria接口执行数据库查询时所使用的查询条件Criterion对象 它提供了一系列的静态方法来生成各种Criterion接口的实现类对象 Criterionrestriction Restrictions between age 10 20 String address hefei nanjing Criteriacriteria session createCriteria User class add restriction add Restrictions in address address 再增加email不为空的条件criteria add Restrictions isNotNull email QBC查询 Order类用于使用Criteria设置查询时的排序规则一般只用到两个静态方法asc desc Listlist Criteria createCriteria User class add Order asc age add Order asc name list 使用QBC级联查询 例如 查询名称为 class1 的班级并关联查询该班级的所有学生信息 Listclazz List session createCriteria Clazz class add Restrictions eq name class1 setFetchMode students FetchMode JOIN list 动态级联获取关联的实体和实体集合 使用QBC级联查询 使用Criteria动态获取关联实体或实体集合与HQL不同 它不会忽略映射文件中指定的获取策略 如果在配置students集合属性时加上fetch join 则以下的查询也会通过外连接获取关联的Student集合 Listclazz List session createCriteria Clazz class add Restrictions eq name class1 list 使用QBC级联查询 使用setFetchMode动态获取关联对象和集合是通过连接来实现的 这样导致返回的List中包含重复的记录 解决方案 1 将查询结果列表clazz进行如下转换 Setc newLinkedHashSet clazz clazz newArrayList c 保持查询结果的顺序 使用QBC级联查询 2 使用ResultTransformer对结果过滤 使用方式如下 Listclazz session createCriteria Clazz class add Restrictions eq name name setFetchMode students FetchMode JOIN setResultTransformer Criteria DISTINCT ROOT ENTITY list QBC查询 使用关联指定约束 例如 查询有姓wang学生的班级 Criteriacriteria session createCriteria Clazz class createAlias students s add Restrictions like s name wang MatchMode START setResultTransformer Criteria DISTINCT ROOT ENTITY Listc criteria list 投影查询 Projections类主要用于帮助Criteria接口完成数据的分组查询和统计功能 Listusers session createCriteria User class setProjection Projections projectionList add Projections rowCount add Projections avg age add Projections max age add Projections min age add Projections groupProperty sex 设置分组字段 list Example查询 Example对象提供了另一种指定查询条件的方式 只要用于创建Example对象的某属性不为空 就会成为查询条件的一部分 Clazzcla newClazz cla setName class1 cla setInfo info cla setId 1L Examplee Example create cla Listr session createCriteria Clazz class add e list 上例中用一个clazz对象做为参数创建了Example 因为clazz对象中属性name和info不为null 因此查询条件中会有name class1 及info info 这二项 Example会忽略主键属性 因此上例中设置的id值不会包含到查询条件中 Example查询 Example对象还可以指定是否在查询条件中使用like进行比较 是否忽略大小写 及指定哪些属性不包括到查询条件中 Exampleexample Example create cat excludeZeroes 排除值为0的属性 excludeProperty color 不包括 color 属性 ignoreCase 比较时不区分大小写 enableLike 使用like进行比较 NativeQuery 有时我们并不能通过HQL和QBC解决一些特殊的问题 如调用存储过程 或访问数据库提供的一些特性 Hibernate允许我们直接使用sql来访问数据库 SQLQueryquery session createSQLQuery select fromClAZZ L

温馨提示

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

评论

0/150

提交评论