- 浏览: 224159 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (121)
- tomcat (1)
- 线程 (1)
- java基础 (7)
- jsp、EL (1)
- JSON (1)
- Struts2 (14)
- properties (1)
- log4j (1)
- Hibernate (14)
- xml (1)
- 存储过程 (1)
- 数据库 (5)
- 动态参数传递 (1)
- webservice (1)
- Spring (10)
- jar包冲突 (1)
- js (8)
- jQuery (5)
- 动态代理技术 (1)
- 负载均衡 (1)
- WebLogic (1)
- 异常处理办法 (3)
- struts1 (4)
- url重写技术 (1)
- 聊天室 (1)
- ip地址 (2)
- html (4)
- ajax (1)
- 其他 (6)
- ibatis (6)
- oracle (2)
- 服务器 (1)
- 常见异常 (3)
- jms (1)
- 乱码 (2)
- web基础 (1)
- JPA (2)
- 开发软件 (3)
- MongoDB (1)
- play (1)
最新评论
-
whjpyyyy:
有用。。
Struts2的iterator各种用法 -
cuisuqiang:
关于pushlet的使用:http://cuisuqiang. ...
网页聊天室的原理
HQL 常用操作符 描述
. 导航路径表达式操作符
+,- 一元正负号
*,/ 乘除法
+,- 加减法
=,<>,<,>,>=,<=,[NOT]BETWEEN[NOT] LIKE,[NOT] IN,IS [NOT] NULL,IS [NOT] EMPTY 二元比较操作符
NOT,AND,OR 逻辑操作符
HQL操作符
(b) HQL常用函数
Sql代码
1. FROM User u where lower(u.email) = 'foo@163.com' --小写
2. FROM User u where lower(u.email) = 'foo@163.com' --大写
3. FROM User u where concat(u.firstname,u.lastname) like 'G% K%' --拼接字符串
4. FROM User u where size(u.bids) > 3 --集合大小
HQL 函数
HQL 常用操作符 描述
UPPER(s),LOWER(s) 大小写
CONCAT(s1,s2) 连接字符串
SUBSTRING(s,offset,length) 取子串
TRIM() 去空格
LENGTH(s) 长度
LOCATE(search,s,offset) 搜索位置
ABS(n),SQRT(n),MOD(dividend,divisor) 绝对值,开方,除法
SIZE 大小写
BIT_LENGTH(s) 位数
CUTTENT_DATE() 当前时间
CURRENT_TIME()
CURRENT_TIMESTAMP()
SECOND(d) 获取时间的不同部分
MINUTE(d)
HOUR(d)
DAY(d)
MONTH(d)
YEAR(d)
CAST(t as TYPE) 类型转换
HQL函数
节 10.03 Order表达式
Sql代码
1. FROM CUSTOMERS as customers WHERE customers.id=1
2. ORDER BY customers.id FROM CUSTOMERS as customers
3. ORDER BY customers.lastname asc,firstname asc
节 10.04 投影查询
Sql代码
1. SELECT user.username,user.password FROM UserInfo user
注:1、在使用Select子句查询时,要给表对象起一个别名。
2、查询出的结果集是一个Object[]数组。
节 10.05 表关联
(a) 隐式关联连接
Sql代码
1. FROM User u WHERE u.homeAddress.city = 'BJ'
2. SELECT distinct u.homeAddress.city FROM User u
3. FROM Bid bid WHERE bid.item.description like '%FOO%'
(b) 普通联结
Sql代码
1. FROM ITEM i JOIN i.bids b WHERE i.description like '%Foo%' AND b.amount > 100
Java代码
1. Iterator iterator = query.list().iterator();
2. while(iterator.hasNext()){
3. Object[] pair = (Object[])iterator.next();
4. Item item = (Item)pair[0];
5. Bid bid = (Bid)pair[1];
6. }
Sql代码
1. SELECT i FROM ITEM i JOIN i.bids b WHERE i.description like '%Foo%' AND b.amount >100
Java代码
1. Iterator iterator = query.list().iterator();
2. while(iterator.hasNext()){
3. Item item = (Item)i.next();}
Sql代码
1. FROM ITEM i LEFT JOIN i.bids b WITH b.amount >1000 WHERE i.description
2. like '%Foo%' --WITH额外联结条件
(c) 抓取联结
fetch 连接允许仅使用一个select语句就将关联的对象或一组集合随他们父对象的初始化而初始化。
Sql代码
1. FROM ITEM i LEFT JOIN FETCH i.bids WHERE i.description LIKE '%Foo%'
注:普通联结同抓取联结的区别:
1、 生成的SQL语句虽然有连接,但是并没有取连接表的数据,还是需要单独的sql取数据。
2、 抓取联结一次性将所需要的数据装入内存中。
3、 当lazy=true时,抓取策略失效。
节 10.06 报表查询
(a) 统计函数投影
Sql代码
1. SELECT COUNT(user.id), MAX(user.id), SUM(user.id),MIN(user.id),AVG(user.score)
2. FROM UserInfo user
注:因为属于投影查询所以返回的结果为Object[]数组
(b) 分组
Sql代码
1. SELECT u.lastname,count(u) FROM User u group by u.lastname
2. SELECT bid.item.id,avg(bid.amount) FROM Bid bid GROUP BY bid.item.id
3. SELECT bid.item.id,count(bid),avg(bid.amount)
4. FROM Bid bid WHERE bid.item.successfulBid IS NULL GROUP BY bid.item.id
5. SELECT bidItem.id,count(bid),avg(bid.amount)
6. FROM Bid bid JOIN bid.item bidItem WHERE bidItem.successfulBid IS NULL GROUP BY bidItem.id
7. SELECT item.id,count(bid),avg(bid.amount)
8. FROM Item item JOIN item.bids.bid WHERE item.successfulBid IS NULL
9. GROUP BY item.id HAVING count(bid) >10
节 10.07 子查询
Sql代码
1. FROM User u WHERE 10 < (SELECT count(i) from u.items i where i.successfulBid IS NOT NULL)
2. FROM Item i WHERE 100 > all(SELECT b.amount FROM i.bids b) --出价小于100
3. FROM Item i WHERE 100 > any(SELECT b.amount FROM i.bids b) --出价大于100
4. FROM Item i WHERE 100 > some(SELECT b.amount FROM i.bids b) --出价等于100
5. FROM Item i WHERE 100 IN (SELECT b.amount FROM i.bids b) --出价等于100
发表评论
-
深入hibernate的三种状态
2015-01-14 20:39 844学过hibernate的人都可能都知道hibernate有三 ... -
表字段和实体属性映射命名策略
2013-03-14 17:16 1751hibernate: <bean ... -
hibernate update单个字段
2013-03-14 16:59 661Hibernate 中如果直接使用 Sess ... -
can bind a LONG value only for insert into a LONG column异常
2012-07-17 09:36 1359can bind a LONG value only f ... -
hibernate id 生成器
2012-07-16 17:10 55221、identity:用于MySql数据库。特点:递增 ... -
hibernate: could not get next sequence value
2012-07-12 18:39 1058hibernate配置oracle自增序列时指定方案,否则 ... -
Hibernate的List映射
2012-05-30 12:05 944Answer类为Question类一对多关联关系,即一个问题对 ... -
hibernate的get、load区别
2012-05-30 10:16 841(1)读取数据库不同 get不是使用延迟加载机 ... -
hibernate配置文件
2012-05-30 10:05 951Hibernate的描述文件可以是一个properties属性 ... -
精通HQL
2012-05-29 18:50 5259本章介绍了Hibernate的几种主要检索方式:HQL检索方式 ... -
Hibernate 参数设置一览表
2012-05-29 15:20 907属性名 用途 hibern ... -
org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlT
2012-05-28 11:37 840org.hibernate.QueryException:Cl ... -
OpenSessionInViewFilter详解
2012-04-17 10:31 1013OpenSessionInViewFilter是Spring提 ...
相关推荐
HQL支持多种表达式和操作符,包括但不限于`BETWEEN`、`IN`、`IS NULL`、`LIKE`等,这使得HQL具有很高的灵活性和表达能力。 #### 属性查询 除了查询整个实体,HQL还允许查询实体的特定属性。例如,只查询所有用户的...
### HQL语句使用大全 HQL(Hibernate Query Language)是一种...以上介绍了HQL的基础语法及常用操作,HQL的强大之处在于其灵活性和易用性,掌握了这些基本用法后,开发人员可以根据具体需求编写出更复杂的查询语句。
HQL支持多种条件查询,包括等于、不等于、大于、小于等操作符。如查询所有年龄大于20岁的用户: ```java String hql = "from User where age > 20"; ``` 同时,HQL还支持like、in、between等特殊查询条件。 三、HQL...
2. **条件查询**:HQL支持多种比较操作符(=, !=, <, >, , >=)以及逻辑运算符(AND, OR, NOT),例如`select e from Employee e where e.age > 30`。 3. **投影**:可以指定查询结果返回哪些字段,例如`select e....
若要查询id在特定集合中的用户,可以使用`IN`操作符,如`FROM User where id IN (:ids)`,并使用`.setParameterList("ids", new Object[]{1,3,4})`传递数组。 9. **使用命名查询**: 命名查询将HQL语句写在`.hbm....
总的来说,HQL是Hibernate框架中一个强大的工具,它极大地简化了Java应用程序中的数据查询工作,使得开发人员能够更加专注于业务逻辑,而不是数据库操作。通过熟练掌握HQL,可以提升开发效率,减少出错概率,提高...
SQL提供了丰富的函数和操作符,可以对数据进行各种复杂的处理。 HQL在某些情况下可能需要Hibernate或其他ORM框架进行转换为SQL,这个转换过程可能会引入额外的开销。然而,现代的ORM框架通常都提供了良好的性能优化...
- **定义**: HQL(Hibernate Query Language)是一种面向对象的查询语言,它的语法类似于SQL,但不同于直接操作数据库表,HQL操作的是持久化的Java对象。这意味着在编写查询时,可以使用Java对象模型中的类名和属性...
HQL支持各种比较和逻辑操作符,如`=`、`<>`、`>`、`、`>=`、`、`between`、`not between`、`in`、`not in`、`is`、`like`等,用于构建复杂的查询条件。 示例: - `from DomesticCat cat where cat.name between 'A'...
HQL(Hibernate Query Language)是Hibernate框架中用于操作对象关系映射(ORM)的查询语言,它是SQL的面向对象版本,使得开发者可以更方便地在Java应用中进行数据库查询。本教程将深入讲解HQL的基础语句,包括ID...
HQL是Hibernate框架提供的一种面向对象的查询语言,它允许开发人员以一种更接近于面向对象的方式进行数据查询操作。模糊查询作为HQL中的一项重要功能,主要用于处理那些不完全确定的数据检索需求,如用户可能只记得...
2. **比较操作**:利用比较操作符(如`>`, `, `!=`, `in`, `between`, `like`等)进行更复杂的筛选。例如,`"from User as user where user.age > 20"`,或`"from User as user where user.name like 't%'"`,这些...
Hibernate Query Language(HQL)是Hibernate框架中专用于对象关系映射(ORM)的查询语言,它使得开发者能够以面向对象的方式来查询...掌握HQL可以帮助我们在使用Hibernate进行ORM开发时更加高效地进行数据查询和操作。
Hibernate Query Language(HQL)是Hibernate框架提供的面向对象的查询语言,它允许开发者以类和属性的名称进行查询,而不是直接操作数据库的表和列。HQL的强大之处在于它将数据库操作与业务逻辑解耦,使得代码更...
HQL提供了`IN`、`NOT IN`、`MEMBER OF`等操作符,便于处理集合属性。 10. **函数与方法调用**: HQL支持内置的数学、字符串和日期函数,也可以调用实体类中的方法。 通过学习“Spring中常用的HQL查询方法.doc”...
### HQL语法总结:实体查询详解 #### 一、实体查询概述 HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者以一种类似于SQL但更接近于面向对象的方式来编写查询。本文将详细介绍HQL中的实体...
2. **函数与操作符**:HQL提供了丰富的函数,如聚合函数(sum、avg等)、日期时间处理函数,以及比较操作符(=、<、>等)。 3. **动态查询**:通过使用Criteria API或者Querydsl等工具,可以构建动态HQL,实现灵活...
**描述**:此操作符用于比较两个表达式的值是否相等。如果表达式 `A` 与表达式 `B` 的值相同,则返回 `TRUE`;否则返回 `FALSE`。 ##### 2. 不等值比较 (`<>` 或 `!=`) **语法**:`A <> B` 或 `A != B` **操作...
与SQL不同,HQL直接操作对象和实体,这使得代码更易于理解和维护。例如,如果你想从数据库中获取所有User对象,你可以使用如下HQL: ```java Query query = session.createQuery("from User"); List<User> users = ...