`
luxhua
  • 浏览: 86298 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate的Query查询示例

阅读更多
Hibernate的Query查询方式的一个简单示例
    Classes是一个JavaBean的简单类,此类中只含有属性、构造方法、get/set方法

package test;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.junit.Test;

import util.HbnUtil;
import entity.Classes;

public class TestQuery {
   @Test
   public void textQuery1() {
      Session session = HbnUtil.getSession();//从工具类中获取Session
      try {
         //定义查询SQL
         String hql = "from Classes c where c.className like ? "+
                      "and c.total>:totalPerson "+
                      "order by c.className asc";
         //创建查询对象Query
         Query query = session.createQuery(hql);
         //为参数赋值
           query.setString(0,"001");
          query.setInteger("totalPerson",40);
          //执行查询,返回对象集合
            List<Classes> allClasses = query.list();

           for(Classes c : allClasses) {
              System.out.println("满足条件的班级:"+c.getClassName());
           }
           
           e.getTransaction().commit();
      } catch (HibernateException e) {
	  e.printStackTrace();
	  s.getTransaction().rollback();
       } finally{
	  HbnUtil.closeSession(s);
       }   
   }

   /**
	 * 查询部分属性,返回结果是对象数组的列表
	 */
	@Test
	public void testQuery2(){
		Session s = HbnUtil.getSession();
		try {
			s.beginTransaction();
			//定义查询HQL
			String hql = "select c.className,c.total" +
					" from Classes c " +
					" where c.className like ? " +
					" and c.total>:totalPerson" +
					" order by c.className asc";
			//创建查询对象Query,赋参数值,设置分页
			Query query = s.createQuery(hql)
							.setString(0, "%0901%")
							.setInteger("totalPerson", 40)
							.setFirstResult(1)
							.setMaxResults(2);
							
			//执行查询,返回对象数组集合
			List<Object[]> allClasses = query.list();
			for (Object[] c:allClasses){
				System.out.println("满足条件的班级名称:"+c[0]);
				System.out.println("总人数:"+c[1]);
			}
			
			s.getTransaction().commit();
		} catch (HibernateException e) {
			e.printStackTrace();
			s.getTransaction().rollback();
		} finally{
			HbnUtil.closeSession(s);
		}
	}
	
	/**
	 * 查询部分属性,返回结果封装成特定对象,
	 * 以对象列表形式返回
	 */
	@Test
	public void testQuery3(){
		Session s = HbnUtil.getSession();
		try {
			s.beginTransaction();
			//定义查询HQL
			String hql = "select new Classes(c.className,c.total)" +
					" from Classes c " +
					" where c.className like ? " +
					" and c.total>:totalPerson" +
					" order by c.className asc";
			//创建查询对象Query
			Query query = s.createQuery(hql);
			//为参数赋值
			query.setString(0, "%0901%");
			query.setInteger("totalPerson", 40);
			//执行查询,返回对象集合
			List<Classes> allClasses = query.list();
			for (Classes c:allClasses){
				System.out.println("满足条件的班级:"+c.getClassName());
			}
			
			s.getTransaction().commit();
		} catch (HibernateException e) {
			e.printStackTrace();
			s.getTransaction().rollback();
		} finally{
			HbnUtil.closeSession(s);
		}
	}
	
	/**
	 * 分页查询
	 */
	@Test
	public void testQuery4(){
		Session s = HbnUtil.getSession();
		try {
			s.beginTransaction();
			//定义查询HQL
			String hql = "select new Classes(c.className,c.total)" +
					" from Classes c ";
			//创建查询对象Query
			Query query = s.createQuery(hql);
			//分页查询,设置从第几条记录开始
			query.setFirstResult(1);
			//设置查询的记录条数
			query.setMaxResults(2);

			//执行查询,返回对象集合
			List<Classes> allClasses = query.list();
			for (Classes c:allClasses){
				System.out.println("满足条件的班级:"+c.getClassName());
			}
			
			s.getTransaction().commit();
		} catch (HibernateException e) {
			e.printStackTrace();
			s.getTransaction().rollback();
		} finally{
			HbnUtil.closeSession(s);
		}
	}
	
	/**
	 * HQL定义在映射文件中
	 */
	@Test
	public void testQuery5(){
		Session s = HbnUtil.getSession();
		try {
			s.beginTransaction();
			
			//从映射文件中获取定义的HQL
			Query query = s.getNamedQuery("query5");
			//分页查询,设置从第几条记录开始
			query.setFirstResult(1);
			//设置查询的记录条数
			query.setMaxResults(2);

			//执行查询,返回对象集合
			List<Classes> allClasses = query.list();
			for (Classes c:allClasses){
				System.out.println("满足条件的班级:"+c.getClassName());
			}
			
			s.getTransaction().commit();
		} catch (HibernateException e) {
			e.printStackTrace();
			s.getTransaction().rollback();
		} finally{
			HbnUtil.closeSession(s);
		}
	}
}
分享到:
评论

相关推荐

    Hibernate中Criteria的用法

    Criteria 查询机制主要包括 QBE(Query By Example)、QBC(Query By Criteria)和 HQL(Hibernate Query Language)三种方式。 QBE(Query By Example) QBE 是一种基于示例的查询机制,它可以根据一个示例对象来...

    详解Hibernate呼叫Oracle的存贮过程和函数

    本示例演示Hibernate 3.2呼叫Oracle的存贮过程和函数,以及通过Hibernate的Query接口简化JDBC的开发步骤--两个步骤得到List集合。使用这种方式开发可以要求开发人员不需要太了解Hibernate框架,但是需要开发人员非常...

    Hibernate+中文文档

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    hibernate3.2中文文档(chm格式)

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    HibernateAPI中文版.chm

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    hibernate 教程

    根据示例查询(Example queries) 13. 原生SQL查询 13.1. 创建一个基于SQL的Query 13.2. 别名和属性引用 13.3. 为SQL查询命名 14. 性能提升(Improving performance) 14.1. 理解集合的性能 ...

    Hibernate学习笔记

    002 第一个 Hibernate 示例 003 hibernate 主要接口介绍 004 持久对象的生命周期介绍 005 query 接口初步 006 开源 O/R 映射框架内容回顾 007 Hibernate 基本映射标签和属性介绍 008 多对一 关联映射 009 一对一 ...

    hibernate 3中的缓存小结

    为此,Hibernate提供了针对条件查询的Query Cache。 2.3.2. 什么样的数据适合存放到第二级缓存中? 1 很少被修改的数据 2 不是很重要的数据,允许出现偶尔并发的数据 3 不会被并发访问的数据 4 参考数据,指的是供应...

    lessons-JPA:使用 Hibernate 的 JPA 示例

    使用 Java 和 JUnit 测试的 JPA 2.1 示例 使用基本的 JPQL 语法 使用一对一表一对多多对多 使用 CriteriaQuery CriteryBuilder 使用@SqlResultMapping @ColumnResult @FieldResult

    Hibernate 中文 html 帮助文档

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    Hibernate中文详细学习文档

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    最全Hibernate 参考文档

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    hibernate 体系结构与配置 参考文档(html)

    14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9....

    Hibernate教程

    20.4. 查询缓存(The Query Cache) 20.5. 理解集合性能(Understanding Collection performance) 20.5.1. 分类(Taxonomy) 20.5.2. Lists, maps 和sets用于更新效率最高 20.5.3. Bag和list是反向集合类中效率...

    hibernate中的hql查询案例

    HQL(Hibernate Query Language),提供更加丰富灵活、更为强大的查询能力;HQL更接近SQL语句查询语法。查询的表(Table)名称是类的名称,表的字段是对象的属性,有多个类的话,可以使用类的全限定名来指定,比如...

    hibernate

    根据示例查询(Example queries) 13. 原生SQL查询 13.1. 创建一个基于SQL的Query 13.2. 别名和属性引用 13.3. 为SQL查询命名 14. 性能提升(Improving performance) 14.1. 理解集合的性能 ...

    Hibernate3+中文参考文档

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    hibernate3.04中文文档.chm

    20.4. 查询缓存(The Query Cache) 20.5. 理解集合性能(Understanding Collection performance) 20.5.1. 分类(Taxonomy) 20.5.2. Lists, maps 和sets用于更新效率最高 20.5.3. Bag和list是反向集合类中...

    Hibernate参考文档

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

Global site tag (gtag.js) - Google Analytics