Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询
2014-10-23 22:02
495 查看
转自:http://blog.csdn.net/iijse/article/details/6161143
示例:
[/code]
使用Session实例 的createCriteria()方法创建Criteria对象
使用工具类Restrictions的方法为Criteria对象设置查询条件,Order工具类的方法设置排序方式,Projections工具类的方法进行统计和分组。
使用Criteria对象的list()方法进行查询并返回结果
Restrictions类的常用方法:
Order类的常用方法:
Projections类的常用方法
示例:
[/code]
示例:
[/code]
示例:
[/code]
示例:
[/code]
[/code]
HQL查询方式
这一种我最常用,也是最喜欢用的,因为它写起来灵活直观,而且与所熟悉的SQL的语法差不太多。条件查询、分 页查询、连接查询、嵌套查询,写起来与SQL语法基本一致,唯一不同的就是把表名换成了类或者对象。其它的,包括一些查询函数 (count(),sum()等)、查询条件的设定等,全都跟SQL语法一样。示例:
[code]
[/code]
QBC(Query By Criteria) 查询方式
这种方式比较面向对象方式,重点是有三个描述条件的对象:Restrictions,Order,Projections。使用QBC查询,一般需要以下三个步骤:使用Session实例 的createCriteria()方法创建Criteria对象
使用工具类Restrictions的方法为Criteria对象设置查询条件,Order工具类的方法设置排序方式,Projections工具类的方法进行统计和分组。
使用Criteria对象的list()方法进行查询并返回结果
Restrictions类的常用方法:
方法名称 | 描述 |
Restrictions.eq | 等于 |
Restrictions.allEq | 使用Map,Key/Valu进行多个等于的比对 |
Restrictions.gt | 大于 |
Restrictions.ge | 大于等于 |
Restrictions.lt | 小于 |
Restrictions.le | 小于等于 |
Restrictions.between | 对应SQL的between |
Restrictions.like | 对应SQL的like |
Restrictions.in | 对应SQL的in |
Restrictions.and | and关系 |
Restrictions.or | or关系 |
Restrictions.sqlRestriction | SQL限定查询 |
方法名称 | 描述 |
Order.asc | 升序 |
Order.desc | 降序 |
方法名称 | 描述 |
Projections.avg | 求平均值 |
Projections.count | 统计某属性的数量 |
Projections.countDistinct | 统计某属性不同值的数量 |
Projections.groupProperty | 指定某个属性为分组属性 |
Projections.max | 求最大值 |
Projections.min | 求最小值 |
Projections.projectionList | 创建一个ProjectionList对象 |
Projections.rowCount | 查询结果集中的记录条数 |
Projections.sum | 求某属性的合计 |
[code]
[/code]
QBE(Query By Example)查询方式
将一个对象的非空属性作为查询条件进行查询。示例:
[code]
[/code]
离线查询
离线查询就是建立一个DetachedCriteria对象,将查询的条件等指定好,然后在session.beginTransaction()后将这个对象传入。通常这个对象可以在表示层建立,然后传入业务层进行查询。示例:
[code]
[/code]
复合查询
复合查询就是在原有查询的基础上再进行查询,可以调用Criteria对象的createCriteria()方法在这个Criteria对象的基础上再进行查询。示例:
[code]
[/code]
分页查询
分页查询主要是要指定两个参数:从第几条数据开始,取多少条数据。可以通过调用Query或者Criteria对象的setFirstResult()和setMaxResults()方法分别进行设定。示例:
[code]
.class, "executeTime", searchCriteria.getStartDate(), searchCriteria.getEndDate()); // tradeNo if (StringUtils.isNotEmpty(searchCriteria.getTradeNo())) { detachedCriteria.add(Restrictions.eq("tradeNo", searchCriteria.getTradeNo())); } // code if (!GwStringUtil.isNullOrEmpty(searchCriteria.getCode())) { detachedCriteria.add(Restrictions.eq("code", searchCriteria.getCode())); } // platform searchCriteria.setSortByFields("agentNo", "executeTime"); searchCriteria.setSortOrders(GwConstants.ASC, GwConstants.DESC); /*********** --------------------查询条件 end---------------- **************/ searchService.find(searchCriteria, detachedCriteria, super.getLocale(), true); } } catch (Exception e) { logger.error("", e); throw e; } return SUCCESS; }
[/code]
相关文章推荐
- Hibernate的几种查询方式 HQL,QBC,QBE,离线查询,复合查询,分页查询
- Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询
- Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
- Hibernate 查询方式(HQL/QBC/QBE)汇总
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
- Hibernate 查询方式(HQL/QBC/QBE)汇总
- Hibernate 查询方式(HQL/QBC/QBE)汇总
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
- Hibernate 查询方式(HQL/QBC/QBE)汇总
- Hibernate的集中查询方式 : hql查询,QBC查询和QBE查询
- Hibernate总的来说共有三种查询方式:HQL、QBC和SQL三种
- Hibernate查询(Query Language,hql,ejbql,nativeql,qbc,qbe)
- Hibernate学习-07:CRUD(增删改查)操作之查询多条/所有记录HQL、QBC、SQL三种方式
- Hibernate查询_HQL_EJBQL_QBC_QBE
- Hibernate的集中查询方式 : hql查询,QBC查询和QBE查询
- HQL和QBC和QBE + hibernate检索方式
- Java程序员从笨鸟到菜鸟之(六十四)细谈Hibernate(十五)HQL与QBC查询方式详解
- 细谈Hibernate(十五)HQL与QBC查询方式详解
- hibernate查询精典例子(HQL QBC QBE)