- 浏览: 1240277 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
在
条件查询 * 可以拼字符串的形式传递参数 * 可以用过?来传递参数(注意索引值是从0开始的,跟jdbc不同,jdbc是从1开始的) * 可以通过 :参数名 来传递参数(即命名参数方式) * 如果对应的参数值是多个,可以调用setParamterList()传方法开递 * 在HQL中可以使用数据库的函数,如date_format()
示例代码如下:
package com.bjsxt.hibernate; import java.text.SimpleDateFormat; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import junit.framework.TestCase; public class SimpleConditionQueryTest extends TestCase { public void testQuery1() { Session session = null; try { session = HibernateUtils.getSession(); //条件查询,拼字符串 List students = session.createQuery("SELECT s.id, s.name FROM Student s WHERE s.name LIKE '%1%'") .list(); for (Iterator iter = students.iterator();iter.hasNext();) { Object[] obj = (Object[])iter.next(); System.out.println(obj[0] + ", " + obj[1]); } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } public void testQuery2() { Session session = null; try { session = HibernateUtils.getSession(); //条件查询,使用 ? 的方式传递参数 Query query = session.createQuery("SELECT s.id, s.name FROM Student s WHERE s.name LIKE ?"); //传递参数 //参数的索引是从0开始的 //传递的字符串,无需用''单引号括起来 query.setParameter(0, "%1%"); List students = query.list(); for (Iterator iter = students.iterator();iter.hasNext();) { Object[] obj = (Object[])iter.next(); System.out.println(obj[0] + ", " + obj[1]); } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } public void testQuery3() { Session session = null; try { session = HibernateUtils.getSession(); //条件查询,使用 :参数名称 的方式传递参数 Query query = session.createQuery("SELECT s.id, s.name FROM Student s WHERE s.name LIKE :myname"); //传递参数 query.setParameter("myname", "%1%"); List students = query.list(); for (Iterator iter = students.iterator();iter.hasNext();) { Object[] obj = (Object[])iter.next(); System.out.println(obj[0] + ", " + obj[1]); } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } public void testQuery4() { Session session = null; try { session = HibernateUtils.getSession(); //条件查询,因为setParameter方法返回Query接口,所以可以用省略的方式来查询 List students = session.createQuery("SELECT s.id, s.name FROM Student s WHERE s.name LIKE :myname and s.id = :myid") .setParameter("myname", "%1%") .setParameter("myid", 15) .list(); for (Iterator iter = students.iterator();iter.hasNext();) { Object[] obj = (Object[])iter.next(); System.out.println(obj[0] + ", " + obj[1]); } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } public void testQuery5() { Session session = null; try { session = HibernateUtils.getSession(); //条件查询,支持in,需要用setParameterList()进行参数传递 List students = session.createQuery("SELECT s.id, s.name FROM Student s WHERE s.id in(:myids)") .setParameterList("myids", new Object[]{1, 3, 5}) .list(); for (Iterator iter = students.iterator();iter.hasNext();) { Object[] obj = (Object[])iter.next(); System.out.println(obj[0] + ", " + obj[1]); } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } public void testQuery6() { Session session = null; try { session = HibernateUtils.getSession(); //条件查询,支持in,需要用setParameter进行参数传递 // List students = session.createQuery("SELECT s.id, s.name FROM Student s WHERE " + // "date_format(s.createTime, '%Y-%m') =?") // .setParameter(0, "2007-01") // .list(); List students = session.createQuery("SELECT s.id, s.name FROM Student s WHERE " + "substring(s.createTime, 1, 7) =?") .setParameter(0, "2007-01") .list(); for (Iterator iter = students.iterator();iter.hasNext();) { Object[] obj = (Object[])iter.next(); System.out.println(obj[0] + ", " + obj[1]); } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } public void testQuery7() { Session session = null; try { session = HibernateUtils.getSession(); //条件查询,支持in,需要用setParameter进行参数传递 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); List students = session.createQuery("SELECT s.id, s.name FROM Student s WHERE " + "s.createTime between ? and ? ") .setParameter(0, format.parseObject("2007-01-01")) .setParameter(1, format.parseObject("2007-03-01")) .list(); for (Iterator iter = students.iterator();iter.hasNext();) { Object[] obj = (Object[])iter.next(); System.out.println(obj[0] + ", " + obj[1]); } }catch(Exception e) { e.printStackTrace(); }finally { HibernateUtils.closeSession(session); } } }
发表评论
-
Hibernate抓取策略二
2010-05-11 17:56 1085在Classes与Student一对多映射中,我们将Set里面 ... -
Hibernate抓取策略一
2010-05-11 16:29 1323抓取策略指多表关联查询的时候,Hibernate会发出多条sq ... -
Hibernate查询缓存
2010-05-11 01:15 1618二级缓存中,如果不设置“查询缓存”,那么hibernate只会 ... -
Hibernate所需完整类库
2010-05-11 01:08 892附件为最新配置Hibernate所需的包. 由来: 一、下 ... -
Hibernate 二级缓存缺少包出现的异常
2010-05-10 23:29 2338由于二级缓存使用的包org.hibernate.cache.E ... -
转:Hibernate性能优化之二级缓存
2010-05-10 17:28 1142http://chenhongbin007.blog.163. ... -
Hibernate lazy加载FOR 单端关联
2010-05-10 00:54 1324Hibernate单端关联懒加载策略:即在<one-to ... -
Hibernate lazy加载FOR Connection
2010-05-10 00:28 1199Hibernate集合属性的懒加载策略: 在集合属性上, ... -
Hibernate lazy加载FOR Class
2010-05-09 23:51 1057lazy策略可以用在: * <class>标签 ... -
Hibernate性能优化:二级缓存
2010-05-06 16:48 1070hibernate二级缓存 定义步骤: 1、打开缓存, ... -
Hibernate性能优化:一级缓存
2010-05-06 16:33 1126一级缓存与session周期一致,二级缓存与sessionFa ... -
Hibernate悲观锁与乐观锁及事务管理机制
2010-05-06 11:57 1197引用: 悲观锁与乐观锁: http://www.iteye ... -
Hibernate学习笔记博客
2010-05-06 11:32 725网上也有人自学hibernate的笔记 http://hi. ... -
Hibernate与EJB的区别
2010-05-05 18:09 878Hibernate不支持分布式应用 -
Hibernate对象状态
2010-05-05 17:48 1775Hibernate对象有三种状态: 瞬时状态(Transie ... -
Hibernate HQL示例十二:DML更新、删除及与Hibernate持久化更新
2010-05-05 16:42 1977DML更新及删除 示例: package com.bjsx ... -
Hibernate HQL示例十一:分页查询
2010-05-05 16:21 1142分页查询: select * from t_student ... -
Hibernate HQL示例十:统计查询
2010-05-05 15:57 2114统计函数的使用 count(*) 等 package co ... -
Hibernate HQL示例九:连接查询
2010-05-05 15:38 3539inner join left out join rig ... -
Hibernate HQL示例八:查询对象导航及Implicit Join
2010-05-05 10:32 1689通过Student对象导航到class对象的id 如下: ...
相关推荐
它提供了灵活多样的查询机制,包括导航对象图、通过标识符检索、使用 HQL 检索对象、使用 Hibernate 条件 API 和使用本地 SQL 查询等。 在 Hibernate 中检索对象的各种方法: 1. 导航对象图:通过对象的关联关系,...
#### 四、Hibernate HQL 关联查询实现 Hibernate HQL关联查询遵循了SQL中连接查询的概念,但在语法上有所区别,使其更符合面向对象编程的习惯。Hibernate支持以下几种连接查询方式: 1. **内连接(Inner Join)**...
### Hibernate HQL 查询详解 #### 一、HQL(Hibernate Query Language)简介 HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者使用类及其属性来编写查询语句,而不是传统的SQL语句。这使得...
2. 简单HQL示例: ```java Query query = session.createQuery("from User user where user.name like 'J%'"); List<User> users = query.list(); ``` 3. 复杂HQL示例: ```java Query query = session....
此压缩包中的`HibernateHQL.chm`文件很可能是Hibernate HQL的详细教程或参考手册,包含了HQL的语法、用法示例、最佳实践以及可能遇到的问题解决方案。它可以帮助开发者深入理解如何在实际项目中高效地使用HQL进行...
3. **条件查询**:支持WHERE子句,可以使用比较运算符(=, , >, <, >=, )和逻辑运算符(AND, OR, NOT)来过滤结果。 4. **分组和聚合**:可以使用GROUP BY和HAVING子句对查询结果进行分组和聚合操作,如COUNT(), ...
本篇文章将深入探讨Hibernate中的三种主要查询方式:HQL(Hibernate Query Language)、Criteria API以及原生SQL。 一、HQL(Hibernate Query Language) HQL是Hibernate提供的一种面向对象的查询语言,它类似于SQL...
在第一个示例中,我们看到一个名为 `findPerson` 的方法,该方法执行了一个 HQL 查询来查找满足特定条件的人。这里的 HQL 语句为: ```java "from syidt.modules.grp.basegrp.persistence.Person as person where ...
### Hibernate 课件_HQL 知识点解析 #### HQL查询 ...这些知识点涵盖了HQL的基本概念、查询方法、各种高级查询技巧以及Session的管理等方面,希望能够帮助大家更好地理解和掌握Hibernate的HQL查询技术。
条件查询 如果想要查询书名中包含 “c#” 的所有书籍,可以使用如下 HQL 语句: ```java String hql = "select b.title, b.price from Books b where b.title like '%c#%'"; Query query = session.createQuery...
根据提供的文件信息,我们可以深入探讨Hibernate HQL(Hibernate Query Language)的相关知识点,特别是关于其查询功能、连接操作、条件过滤以及聚合函数的应用等。 ### Hibernate HQL简介 Hibernate HQL是一种...
总的来说,“hibernate hql where语句拼接工具类”是为了简化和规范化在Hibernate中构建带有动态条件的HQL查询的过程,提高代码的可读性和可维护性。通过这样的工具类,开发者可以更方便地根据业务需求构建复杂的...
### Hibernate HQL 查询详解 #### 一、HQL 概述 Hibernate 提供了一种非常强大的查询语言——HQL(Hibernate Query Language),它在语法上与 SQL 类似但功能更为强大,因为它支持面向对象的特性,例如继承、多态性...
"HibernateHQL实现前台翻页"这一主题就是关于如何利用Hibernate的HQL(Hibernate Query Language)来实现数据库查询的分页功能,并结合Servlet(通常与MVC模式中的Controller层对应)和MySQL数据库来构建一个完整的...
根据提供的标题、描述以及部分代码内容,我们可以了解到这段材料主要涉及的是Hibernate框架中的HQL(Hibernate Query Language)查询语言的使用。接下来将详细介绍HQL的相关知识点。 ### HQL概述 HQL是Hibernate...
除了检索所有对象,HQL还可以进行更复杂的查询,比如根据特定条件筛选。例如,如果我们要找到所有年龄大于18岁的学生,HQL语句如下: ```java String hql = "from Student where sage > 18"; List<Student> adults ...
Hibernate 支持多种方式来实现多表连接查询,包括 HQL(Hibernate Query Language)和 Criteria 查询。本项目主要关注 Criteria API 的使用,这是一种基于 Java 对象的查询方式,更加灵活且易于理解和维护。 **...
在给定的部分内容中,我们看到了一个简单的Hibernate查询示例: ```java List users = session.find("from User"); ``` 这条语句使用HQL语法查询了所有的`User`对象。`find`方法是`Session`接口的一个快捷方法,...
下面是一个简单的HQL查询示例: ```java String hql = "FROM Student WHERE age > 20"; Query query = session.createQuery(hql); List<Student> students = query.list(); for (Student student : students)...
8. **Criteria API**:另一种查询方式,提供了动态构建查询的能力,无需编写HQL,通过Criteria、DetachedCriteria等对象构建查询条件。 9. ** Criteria与HQL对比**:Criteria API适用于动态查询,而HQL适合静态查询...