简单属性查询(重要)
* 单一属性查询,返回结果集是属性列表,其元素类型和实体类中相应的属性类型一致
* 多个属性查询,返回的结果集是对象数组,数组的长度和查询的属性的个数一致
数组元素的类型和查询的属性类型一致
* 如果认为返回的数组不够对象化,可以采用hql动态生成实体对象
参加:SimplePropertyQueryTest.java
package com.wlh.hibernate;
import java.util.Iterator;
import java.util.List;
import junit.framework.TestCase;
import org.hibernate.Session;
public class SimplePropertyTest extends TestCase{
//单个属性查询
public void testQuery1(){
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
//单个属性查询,返回结果集属性集合,其元素类型和实体类中相应属性的类型一致
List students=session.createQuery("select name from Student ").list();
for(Iterator iter=students.iterator();iter.hasNext();){
String name=(String)iter.next();
System.out.println("name="+name);
}
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
}
//多个属性查询
public void testQuery2(){
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
//查询多个属性其集合元素是对象数组l列表。即,多个对象数组的集合
//数组元素中的类型与对应的实体类中的属性类型一致
//数组的长度取决于查询的属性个数
List students=session.createQuery("select id,name from Student ").list();
for(Iterator iter=students.iterator();iter.hasNext();){
Object[] o=(Object [])iter.next();
System.out.println("id="+o[0]+",name="+o[1]);
}
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
}
//多个属性查询
public void testQuery3(){
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
List students=session.createQuery("select new Student(id,name) from Student ").list();
for(Iterator iter=students.iterator();iter.hasNext();){
Student o=(Student)iter.next();
System.out.println("id="+o.getId()+",name="+o.getName());
}
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
}
}
分享到:
相关推荐
4. **灵活性**:HQL支持多种查询方式,包括简单查询、复杂查询、联接查询等。 ### HQL的基本使用 #### 1. 简单查询示例 ```java Session session = HibernateUtil.getSession(); String hql = "FROM Admin AS ...
HQL语法丰富,涵盖了从简单到复杂的查询需求。以下是一些基础的HQL语法示例及其解析: 1. **基本查询** - `from Person as p`: 此语句用于从Person表中选择所有实例。这里的`as p`是可选的,用于指定结果集中的...
例如,假设我们有一个`Student`类,包含`name`和`age`属性,一个简单的HQL查询可能如下: ```sql SELECT s FROM Student s WHERE s.age > 18 ``` 这个查询会返回所有年龄大于18岁的学生对象。 **2. HQL的SELECT...
综上所述,Hibernate的HQL模糊查询是开发中不可或缺的工具,它提供了一种简单而强大的方式来处理数据库的模糊查询需求。通过理解并熟练掌握这些概念,可以更好地利用Hibernate进行数据操作,提升项目的开发效率和...
QBC是一种基于实例的查询方式,通过提供一个实体对象实例作为查询的模板,Hibernate会自动根据对象的属性生成相应的查询语句。QBC的主要优势在于它的直观性和简单性。QBC中的运算符与HQL中的对应,例如,通过调用...
HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者使用类及其属性来编写查询语句,而不是传统的SQL语句。这使得开发人员能够更加专注于业务逻辑而不用深入到SQL层面。HQL支持各种复杂的查询,...
本文将对Hibernate HQL查询语法进行总结,涵盖基础查询、属性查询、实例化查询以及查询链接等多个方面。 1. 基础查询: 基础查询是最简单的HQL语句,用于获取所有`Student`对象。例如: ```java from Student ``` ...
通过上述介绍,我们可以看到Hibernate和HQL的强大之处在于它们能够提供一种简单且直观的方式来处理数据库操作,特别是数据查询。对于那些希望在Java应用程序中集成数据库功能的开发者来说,掌握Hibernate和HQL是必不...
HQL 中的单表查询使用 FROM 语句,例如:FROM eg.Cat as cat,其中 cat 只是一个别名,为了用其他子语句的时候书写简单。 2.多表查询 HQL 中的多表查询使用 FROM 语句,例如:FROM eg.Cat as cat, eg.Dog as dog。...
- **Criterion**:表示一个具体的查询条件,可以是一个简单的比较,也可以是一个复杂的表达式。 - **Order**:用于指定结果集的排序方式。 - **Restrictions**:提供了丰富的预定义条件表达式,如等于、不等于、大于...
HQL是一种面向对象的查询语言,用于在Hibernate框架中执行数据检索任务。它允许开发人员以一种接近Java语言的方式进行数据库操作,从而简化了数据访问层的复杂度。 ### 1. from子句 `from`子句是HQL语句的基础,...
例如,以下是一个简单的HQL查询示例,用于获取所有年龄大于30岁的用户: ```java String hql = "FROM User WHERE age > 30"; Query query = session.createQuery(hql); List<User> users = query.list(); ``` 在线...
【描述】:在ORM框架Hibernate中,数据查询和检索是一个核心功能,它提供了多种查询方式,包括标准化对象查询(Criteria Query)、Hibernate查询语言(HQL)和原生SQL查询。其中,HQL作为官方推荐的查询方式,具有...
HQL作为Hibernate的核心组成部分,不仅提供了与Criteria查询类似的面向对象封装,还具有更丰富的查询特性,使得复杂的查询操作变得简单易懂。 【HQL基本结构】 HQL查询语句主要包括以下几个部分: 1. `SELECT`:...
- HQL的查询结果通常是一个对象列表,而不是简单的值列表。 - 虽然HQL与SQL相似,但并非所有SQL特性都适用于HQL,因为HQL是面向对象的,而非面向关系的。 - HQL可以和Criteria API结合使用,提供更强大的查询能力。 ...
例如,一个简单的HQL查询可能如下: ```hql SELECT entity FROM EntityClass entity WHERE entity.property = 'value' ``` 这里`EntityClass`是持久化类的名称,`entity`是查询中的别名,`property`是类的属性。...
另一方面,QBC(Query By Example)是一种基于Java对象的查询方式,它允许我们根据一个对象实例或其属性来构造查询。例如,如果我们想找到所有名字为"John"的用户,我们可以这样做: ```java User user = new User...