`
wlh269
  • 浏览: 455824 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HQL (三) 条件查询

阅读更多
条件查询(重要)
* 可以采用拼字符串的方式传递参数
* 可以采用 ?号的方式传递参数
* 可以采用 :参数名的方式传递参数
* 如果传递多个参数,使用setParameterList来传递
* 在hql中可以使用数据库的函数,如:date_format
* 参见:SimpleConditionQueryTest.java

"like" 和 "=" 都可以通过 ": 参数名" 或者 "?" 接参数

  如下:  like :参数名  ,like ? , =:参数名 , =?



package com.wlh.hibernate;

import java.text.SimpleDateFormat;
import java.util.Iterator;
import java.util.List;

import junit.framework.TestCase;

import org.hibernate.Query;
import org.hibernate.Session;

public class SimpleConditionQueryTest extends TestCase{

	public void testQuery1() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			//可以拼字符串

			List students=session.createQuery("select id,name from Student where name like '%1%'").list();
			for(Iterator iter=students.iterator();iter.hasNext();){
				Object[] o=(Object[])iter.next();
				System.out.println(o[0]+","+o[1]);
			}
			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();
			[b]//可以使用 ?号方式传递参数
			//参数的索引从0开始
			//传递的参数值不用单引号引起来[/b]

			 /*Query query=session.createQuery("select id,name from Student where name like ?");
			 query.setParameter(0, "%1%");
			 List students=query.list();*/
			
			List students=session.createQuery("select id,name from Student where name like ? ").setParameter(0, "%1%").list();
			for(Iterator iter=students.iterator();iter.hasNext();){
				Object[] o=(Object[])iter.next();
				System.out.println(o[0]+","+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();
			[b]//like :参数名[/b]	
		 Query query=session.createQuery("select id,name from Student where name like :myname");
			 query.setParameter("myname", "%1%");
			 List students=query.list();
			for(Iterator iter=students.iterator();iter.hasNext();){
				Object[] o=(Object[])iter.next();
				System.out.println(o[0]+","+o[1]);
			}
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtils.closeSession(session);
		}
	}	
	
	public void testQuery4() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			[color=red]//=?[/color]	

	Query query=session.createQuery("select id,name from Student where  id=?");
			query.setParameter(0,10);
			 List students=query.list();
			for(Iterator iter=students.iterator();iter.hasNext();){
				Object[] o=(Object[])iter.next();
				System.out.println(o[0]+","+o[1]);
			}
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtils.closeSession(session);
		}
	}	
	public void testQuery5() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			[b][color=red]//=:参数名[/color][/b]	

		Query query=session.createQuery("select id,name from Student where  id=:myid");
			query.setParameter("myid",10);
			 List students=query.list();
			for(Iterator iter=students.iterator();iter.hasNext();){
				Object[] o=(Object[])iter.next();
				System.out.println(o[0]+","+o[1]);
			}
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtils.closeSession(session);
		}
	}	
	public void testQuery6() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			[b]// like :参数名   
			// = :参数名   [/b]

			 Query query=session.createQuery("select id,name from Student where name like :myname and id =:myid");
			 query.setParameter("myname", "%1%");
			 query.setParameter("myid", 11);
			 List students=query.list();
			for(Iterator iter=students.iterator();iter.hasNext();){
				Object[] o=(Object[])iter.next();
				System.out.println(o[0]+","+o[1]);
			}
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtils.closeSession(session);
		}
	}	
	public void testQuery7() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
	[b][color=red]//支持in,需要使用setPramaterList进行参数传递
                     //传入的参数必须是对象数组[/color][/b]

			 Query query=session.createQuery("select id,name from Student where id in(:myids)");
              query.setParameterList("myids", new Object[]{1,2,3,4,5});
			 List students=query.list();
			for(Iterator iter=students.iterator();iter.hasNext();){
				Object[] o=(Object[])iter.next();
				System.out.println(o[0]+","+o[1]);
			}
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtils.closeSession(session);
		}
	}	
	
	
	public void testQuery8() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			[b]//查询2007年2月创建的学生(模糊查询)[/b]

			
			/*Query query=session.createQuery("select id,name from Student where date_format(createTime,'%Y-%m')=?");
              query.setParameter(0, "2007-02");*/
			Query query=session.createQuery("select id,name from Student where substring(createTime,1,7)=?");
			query.setParameter(0, "2007-02");
			 List students=query.list();
			for(Iterator iter=students.iterator();iter.hasNext();){
				Object[] o=(Object[])iter.next();
				System.out.println(o[0]+","+o[1]);
			}
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtils.closeSession(session);
		}
	}	
	
	
	
	public void testQuery9() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			[b]//找出某个(时间段)入学的学生
			////查询2007-01-01到2007-01-20创建的学生[/b]

			SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			Query query=session.createQuery("select id,name from Student where createTime between ? and ? order by id");
			query.setParameter(0, sdf.parse( "2007-01-10 00:00:00"));
			query.setParameter(1, sdf.parse( "2007-01-20 23:59:59"));
			 List students=query.list();
			for(Iterator iter=students.iterator();iter.hasNext();){
				Object[] o=(Object[])iter.next();
				System.out.println(o[0]+","+o[1]);
			}
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtils.closeSession(session);
		}
	}	
	
}

0
0
分享到:
评论

相关推荐

    hql多表查询

    在这个查询中,`EipLeaveMsg`, `EipRyJbxx`, 和 `SysUser` 分别表示三个不同的类,它们映射到数据库中的三张表。查询的目标是从这些表中选择特定属性并进行关联操作。 #### 查询解析: 1. **查询目标**:从`...

    hibernateHQL关联查询

    ### Hibernate HQL 关联查询详解 #### 一、引言 在进行数据库操作时,关联查询是必不可少的一部分,尤其在处理复杂的数据结构时更是如此。Hibernate作为一种流行的Java持久层框架,提供了强大的对象关系映射(ORM...

    hibernate的HQL的模糊查询

    三、HQL模糊查询的进阶使用 1. **使用`in`关键字**:如果需要查询符合多个条件的记录,可以结合`in`关键字。例如,查询所有名字以"张"或"李"开头的用户: ```java String[] names = {"%张%", "%李%"}; query....

    HQL查询及语法

    #### 三、HQL语法示例解析 HQL语法丰富,涵盖了从简单到复杂的查询需求。以下是一些基础的HQL语法示例及其解析: 1. **基本查询** - `from Person as p`: 此语句用于从Person表中选择所有实例。这里的`as p`是可...

    hibernate hql各类查询范例

    在第一个示例中,我们看到一个名为 `findPerson` 的方法,该方法执行了一个 HQL 查询来查找满足特定条件的人。这里的 HQL 语句为: ```java "from syidt.modules.grp.basegrp.persistence.Person as person where ...

    HQL 语法总结 实体查询

    #### 三、属性查询 属性查询允许开发者仅获取实体的部分属性,而不是整个实体。例如,如果我们只想获取用户的名字和年龄,可以使用如下HQL语句: ```java List[]> list = session.createQuery("select user.name, ...

    hql语句查询

    #### 三、HQL语法详解 ##### 1. 基础查询 - **查询所有列**: ```hql SELECT obj FROM TableName obj; ``` - **查询指定列**: ```hql SELECT obj.column1, obj.column2 FROM TableName obj; ``` ##### 2. ...

    hibernateHQL基本查询

    条件查询 如果想要查询书名中包含 “c#” 的所有书籍,可以使用如下 HQL 语句: ```java String hql = "select b.title, b.price from Books b where b.title like '%c#%'"; Query query = session.createQuery...

    hibernate_hql.rar_HQL

    HQL支持多种条件查询,包括等于、不等于、大于、小于等操作符。如查询所有年龄大于20岁的用户: ```java String hql = "from User where age > 20"; ``` 同时,HQL还支持like、in、between等特殊查询条件。 三、HQL...

    精通HQL(word格式)

    如果要根据特定条件查询,比如找出所有年龄大于18岁的学生,可以这样写: ```sql SELECT s FROM Student s WHERE s.sage > 18 ``` HQL还可以进行关联查询,例如,找出所有选修了某门课程的学生: ```sql SELECT s ...

    Spring中hql语句的常用方法

    #### 三、使用命名参数的查询 在实际开发中,使用命名参数可以提高代码的可读性和可维护性。 1. **findByNamedParam(String queryString, String paramName, Object value)**:此方法接受一个包含命名参数的HQL...

    精通HQL.doc

    2. **根据条件查询**:可以添加WHERE子句来指定查询条件,如 `from Student where sname='张三'`,这将返回名字为"张三"的学生对象。 3. **排序**:使用ORDER BY子句进行结果排序,如 `from Student order by sname...

    HQL语法大全,并带有详细的例子

    #### 三、HQL语法详解及示例 下面将详细介绍HQL中的几种常见语法及其应用场景。 ##### 1. `FROM`子句 用于指定查询的目标对象或类。例如,查询所有Person对象: ```java from Person ``` 该语句返回的是Person表中...

    超级详细的hql查询语句教程

    ### HQL查询语句详解 #### 一、HQL简介 Hibernate Query Language(HQL)是一种面向对象的查询语言,其语法与SQL相似但并非完全相同。HQL的设计旨在更好地支持面向对象编程特性,比如继承、多态以及关联等概念。...

    hibernate 中HQL语句查询学习笔记

    ### Hibernate中HQL语句查询学习笔记 #### HQL基础 **HQL**(Hibernate Query Language)是Hibernate框架推荐使用的查询语言,它提供了一种面向对象的方式来查询数据库,支持多种复杂的查询操作,如继承、多态及...

    HQL 查询语言基础 二

    `WHERE`子句用于过滤查询结果,它允许根据特定条件筛选记录。例如: ```hql FROM Person WHERE name LIKE 'tom%' ``` 这条查询将返回所有名字以“tom”开头的`Person`实例。 对于关联对象的属性过滤,可以使用点...

    Hibernate-HQL.rar_HQL_hibernate hql

    三、HQL与SQL的对比 HQL的灵活性在于它可以处理对象关系,例如一对一、一对多、多对多的关系。在SQL中,处理这些关系通常需要复杂的联接操作,而在HQL中则相对简单。此外,HQL支持动态查询,可以方便地处理集合类型...

    hql查询语言语法

    #### 三、HQL查询示例分析 根据给定的部分内容,我们可以看到两个具体的HQL查询示例,它们展示了如何使用HQL执行不同类型的查询。 ##### 1. 查询所有名称为“很普通事情”的事件相关联的人 ```java List p1 = sess....

Global site tag (gtag.js) - Google Analytics