- 浏览: 253014 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
B/S结构下套打票据实现 - Lodop打印组件 -
iTarget:
原原文::http://blog.csdn.net/steve ...
加减乘除的问题 - BigDecimal -
iTarget:
原文:http://blog.csdn.net/gqm1982 ...
加减乘除的问题 - BigDecimal -
iTarget:
在Java中,要想实现精确计算,解决方案是使用BigDecim ...
加减乘除的问题 - BigDecimal -
叶寒_:
...
JSP简单标签
节 8.01 基本查询
以下是HQL/QBC/Native SQL三种查询策略
HQL策略:
session.createQuery("FROM Category c where c.name like 'Laptop%'");
QBC策略:
session.createCriteria(Category.class).add(Restrictions.like("name", "Laptop%"));
Native SQL策略
session.createSQLQuery("select {c.*} from CATEGORY {c} where NAME like 'Laptop%'"). addEntity("c",Category.class);
节 8.02 分页查询
Criteria criteria = session.createCriteria(Category.class) .add(Restrictions.like("name", "Laptop%")); criteria.addOrder(Order.asc("name")); criteria.setFirstResult(0);//初始行数 criteria.setMaxResults(20);//每页显示行数
节 8.03 数据过滤
方法 说明
Restrictions.eq =
Restrictions.allEq 利用Map来进行多个等于的限制
Restrictions.gt >
Restrictions.ge >=
Restrictions.lt <
Restrictions.le <=
Restrictions.between BETWEEN
Restrictions.like LIKE
Restrictions.in in
Restrictions.and and
Restrictions.or or
Restrictions.sqlRestriction 用SQL限定查询
(a) 应用限制
Criterion emailEq = Restrictions.eq("email", "w@163.com"); Criteria criteria = session.createCriteria(User.class); criteria.add(emailEq); User user = (User)criteria.uniqueResult();
(b) 比较表达式
Restrictions.between("amount", new BigDecimal(100), new BigDecimal(200)); Restrictions.gt("amount", new BigDecimal(100)); Restrictions.in("email", emails);//注:emails为集合 Restrictions.isNull("email"); Restrictions.isNotNull("email"); Restrictions.isEmpty("bids"); Restrictions.sizeGe("bids", 3);//bids属性大小
(c) 字符串匹配
Restrictions.like("email", "G%"); Restrictions.like("email", "G%",MatchMode.START); 注:MatchMode分为START,END,ANYWHERE,EXACT四种模式 Restrictions.like("email", "G%").ignoreCase();
(d) 组合表达式和逻辑操作符
Restrictions.or( Restrictions.and( Restrictions.like("firstname", "G%"), Restrictions.like("lastname", "K%")), Restrictions.in("email",emails));
(e) SQL表达式
Restrictions.sqlRestriction("{alias}.name='tie' and {alias}.addr='dalian'"); Restrictions.sqlRestriction("{alias}.name=?", "tie", Hibernate.STRING);//姓名为tie的对象 Restrictions.sqlRestriction("length({alias}.PASSWORD) < ?",5,Hibernate.INTEGER); //密码小于5个字符对象 Restrictions.sqlRestriction("'100' >all( select b.AMOUNT FROM BID b " + " WHERE b.ITEM_ID = {alias}.ITEM_ID)");//返回出价不大于100
(f) 子查询
节 8.04 表关联
(a) 隐式关联
隐式关联有两种方法:
1、 Criteria接口的createCriteria()方法:
session.createCriteria(Item.class) .add(Restrictions.like("description", "Foo",MatchMode.ANYWHERE)) .createCriteria("bids") .add(Restrictions.gt("amount",new BigDecimal(100))); session.createCriteria(Item.class) .createCriteria("seller") .add(Restrictions.like("email", "%@"));
2、 分配别名:
session.createCriteria(Item.class) .createAlias("bids","b") .add(Restrictions.like("description", "%Foo%")) .add(Restrictions.gt("b.amount", new BigDecimal(100))); session.createCriteria(Item.class) .createAlias("seller", "s") .add(Restrictions.like("s.email","%@"));
(b) 抓取关联
session.createCriteria(Item.class) .setFetchMode("bids",FetchMode.JOIN) .add(Restrictions.like("description", "%Foo%"))
节 8.05 投影/报表查询
(a) 简单投影
session.createCriteria(Item.class) .add(Restrictions.gt("endDate", new Date())) .setProjection(Projections.id());//返回单一属性 session.createCriteria(Item.class).setProjection( Projections.projectionList().add(Projections.id()). add(Projections.property("description")));//返回一个Object[]
(b) 统计分组
session.createCriteria(Item.class) .setProjection(Projections.rowCount()); session.createCriteria(Item.class) .setProjection(Projections.projectionList() .add(Projections.rowCount()) .add(Projections.sum("sales")) .add(Projections.avg("score")) ); session.createCriteria(Bid.class) .createAlias("bidder", "u") .setProjection(Projections.projectionList() .add(Property.forName("u.id").group()) .add(Property.forName("u.username").group()) .add(Property.forName("id").count()) .add(Property.forName("amount").avg()) );
(c) SQL投影
String sqlFragment = "(select count(*) from Item i where i.item_id = item_id) " + " as numofitems"; session.createCriteria(Bid.class).createAlias("bidder", "u") .setProjection( Projections.projectionList().add( Projections.groupProperty("u.id")).add( Projections.groupProperty("u.username")).add( Projections.count("id")).add( Projections.avg("amount")).add( Projections.sqlProjection(sqlFragment, new String[] { "numofitems" }, new Type[] { Hibernate.LONG })) );
发表评论
-
HIbernate 缓存
2009-04-02 16:48 1468节 13.01 缓存类型 1、 事务范围缓存:添 ... -
Hibernate HQL语言
2009-03-26 16:01 8416HQL查询 节 10.01 单表HQL查询 FROM C ... -
Hibernate 查询策略
2009-03-26 13:33 3469第 I 条 -
HIbernate 大批量数据处理
2009-03-25 17:11 2852节 1.01 -
Hibernate乐观锁控制
2009-03-24 17:00 11091、 -
Hibernate控制事务并发访问
2009-03-24 16:28 1596(a) -
Hibernate的Java SE事务
2009-03-24 15:26 11011、在Hibernate的配置文件中添加以下内容: < ... -
Hibernate 一对一延迟加载
2009-03-24 14:38 1743当主外键为同一字段时可以使用一对一的延迟加载 ... -
Hibernate的继承策略
2009-03-23 17:15 1486... -
Hibernate的集合映射
2009-03-23 17:13 1079... -
Hibernate持久化上下文
2009-03-23 17:10 1263持久化上下文作用 : -
Hibernate托管对象
2009-03-23 16:41 30771、 -
Hibernate 一对多关联
2007-08-14 14:44 1172java 代码 CREATE TABLE PERS ... -
HibernateSessionFactory 工具类
2007-07-31 17:37 6904java 代码 public class ... -
Hibernate 多对多关联
2007-07-31 17:36 1482xml 代码 CREATE TABLE GROUP ... -
Hibernate 一对一关联
2007-07-31 17:34 1121xml 代码 CREATE TABLE CUST ... -
Hibernate 一对一关联 (多对一的曲线实现)
2007-07-31 17:32 1611xml 代码 CREATE TABLE AUTHO ... -
Hibernate 多对一关联
2007-07-31 17:30 1247xml 代码 CREATE TABLE CUST ...
相关推荐
本篇文章将深入探讨Hibernate中的QBC(Query By Example)条件查询与传统的HQL(Hibernate Query Language)查询的对比,帮助开发者更好地理解和选择适合的查询方式。 QBC(Query By Example)是Hibernate提供的一...
2. HQL(Hibernate Query Language):HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但它是针对对象而不是表格进行操作的。HQL允许开发者以类和对象的方式编写查询,支持复杂的查询结构,如连接、子查询、...
本文主要探讨Hibernate中的查询语言,包括面向对象的查询语言HQL,QueryBy Criteria (QBC),Query By Example (QBE),以及原生SQL的使用。 1. **大小写敏感性** HQL查询语句对Java类和属性名称的大小写敏感,而...
首先,HQL是Hibernate专门设计的一种面向对象的查询语言,它的语法类似于SQL,但更注重对象而非表。例如,如果我们有一个`User`实体,我们可以使用HQL来获取所有用户: ```java Session session = sessionFactory....
在深入探讨Hibernate的HQL语言之前,我们先理解一下什么是HQL。HQL,全称Hibernate Query Language,是Hibernate框架提供的一种面向对象的查询语言,它的语法结构与SQL相似,但主要针对对象和实体进行操作,而不是...
- **HQL与HBM的关系**:HQL是一种面向对象的查询语言,用于查询和操作Hibernate管理的对象。它依赖于HBM映射文件定义的对象模型,因此,正确配置HBM文件对于HQL的正常使用至关重要。 #### 2. Projection在查询中的...
HQL(Hibernate Query Language)和QBC(Query By Example)是Hibernate提供的两种主要的查询方式,它们提供了灵活且强大的查询能力。下面将详细阐述这两种查询方式以及它们的查询条件。 **HQL(Hibernate Query ...
HQL是Hibernate特有的面向对象的查询语言,其语法类似于SQL,但操作的是对象和集合。它可以更自然地映射到Java对象。例如,查找所有年龄大于30岁的用户: ```java String hql = "FROM User WHERE age > :age"; ...
6. **HQL与QBC**: Hibernate查询语言(HQL)是面向对象的查询语言,类似SQL但更接近Java。另外,Query By Criteria(QBC)提供了一种基于对象的查询方式,可以动态构建查询条件。 7. **级联操作与缓存**: Hibernate...
- 支持多种查询语言:HQL(Hibernate Query Language)是面向对象的查询语言,类似SQL;QBC(Query By Criteria)提供基于Java对象的查询方式。 - 第三方缓存集成:如支持 Ehcache,用于提高数据访问速度和并发...
5. **查询语言HQL**:Hibernate Query Language,是Hibernate提供的一种面向对象的查询语言,类似于SQL,但更贴近于Java对象。 6. ** Criteria查询**:一种动态构建查询的方法,允许在运行时构建查询,提供了更灵活...
7. **HQL和QBC**:Hibernate查询语言(HQL)是面向对象的查询语言,与SQL类似但更贴近Java编程。Query By Criteria API提供了一种基于对象的方式来构建查询,两者的使用和优化技巧。 8. **缓存机制**:探讨...
5. **查询语言**: HQL(Hibernate Query Language)和QBC(Query By Criteria)是Hibernate提供的两种面向对象的查询语言,可以替代SQL进行数据库查询。 6. ** Criteria查询**: 一种更强大的查询方式,允许动态构建...
Hibernate 提供了多种查询方式,包括 HQL(Hibernate Query Language)、QBC(Query By Criteria)和 JPA(Java Persistence API)的 Criteria API。这些查询语言提供了面向对象的方式来检索数据,比传统的 SQL 更加...
本教程主要涵盖了Hibernate的核心概念和使用技巧,包括缓存机制、对象状态管理、数据检索策略以及查询语言。 **一、Hibernate缓存** Hibernate的缓存分为一级缓存和二级缓存。一级缓存是每个Session内部的对象缓存...
本文将深入探讨Hibernate的查询方式,特别聚焦于HQL(Hibernate Query Language)查询方式以及QBC(Query By Criteria)查询方式,旨在帮助读者全面理解并掌握这些核心功能。 #### HQL查询方式:面向对象的查询语言...
5. **HQL与Criteria查询**:Hibernate提供了自己的查询语言HQL(Hibernate Query Language),以及Criteria API,这两者都允许开发者以面向对象的方式执行数据库查询。手册将展示如何编写HQL语句,执行复杂的查询,...
6. **HQL和QBC**:虽然主要讨论的是XML配置,但值得一提的是,Hibernate还提供了HQL(Hibernate Query Language)和QBC(Query By Criteria)两种查询方式,它们是面向对象的查询语言,与SQL类似,但更接近Java编程...
5. HQL和QBC:Hibernate查询语言(HQL)和Query By Criteria(QBC)是Hibernate提供的两种高级查询方式,它们允许开发者以面向对象的方式编写查询,避免了直接使用SQL的复杂性。 6. 关联映射:详细阐述一对一、一对...
- **HQL (Hibernate Query Language)**:HQL是一种面向对象的查询语言,它提供了一种灵活且强大的查询方式。HQL语法类似于SQL,但它是基于对象模型的,可以查询、更新或删除对象。 - **QBC (Query By Criteria)**:...