`

Criteria查询,DetachedCriteria离线查询 --做综合查询

 
阅读更多

通过Session得到Criteria类的对象

Java代码 复制代码 收藏代码
  1. /**    
  2.  * 用Criteria方便的综合查询 Criteria类有丰富的比较方法    
  3.  *     
  4.  * 如:大于,小于,等于, not null, in,null, like, isEmpty....    
  5.  */     
  6. public static void select()      
  7. {      
  8.     Session s = null;      
  9.     try     
  10.     {      
  11.         s = HibernateUtil.getSeesion();      
  12.      
  13.         //得到Criteria对象      
  14.         final Criteria c = s.createCriteria(User.class);      
  15.      
  16.         //添加查询条件 ,eq()表示等于,第一个参数是User类上的属性名, 第二个参数是值 .      
  17.         c.add(Restrictions.eq("name""zl"));      
  18.         c.add(Restrictions.lt("birthday"new Date())); //lt()表示小于      
  19.      
  20.         //下面两个条件是 或的关系,可以注意观察输出的SQL语句      
  21.         c.add(Restrictions.or(Restrictions.eq("name""wj"), Restrictions.eq("name""name0")));      
  22.         // 分页      
  23.         c.setFetchSize(10); //从第10条记录起      
  24.         c.setMaxResults(10); //查出10条记录      
  25.      
  26.         //执行查询      
  27.         final List<User> list = c.list();      
  28.         for (final User u : list)      
  29.         {      
  30.             System.out.println(u.getId() + " " + u.getName());      
  31.         }      
  32.     }      
  33.     finally     
  34.     {      
  35.         s.clear();      
  36.     }      
  37. }    
/**  
 * 用Criteria方便的综合查询 Criteria类有丰富的比较方法  
 *   
 * 如:大于,小于,等于, not null, in,null, like, isEmpty....  
 */  
public static void select()   
{   
    Session s = null;   
    try  
    {   
        s = HibernateUtil.getSeesion();   
  
        //得到Criteria对象   
        final Criteria c = s.createCriteria(User.class);   
  
        //添加查询条件 ,eq()表示等于,第一个参数是User类上的属性名, 第二个参数是值 .   
        c.add(Restrictions.eq("name", "zl"));   
        c.add(Restrictions.lt("birthday", new Date())); //lt()表示小于   
  
        //下面两个条件是 或的关系,可以注意观察输出的SQL语句   
        c.add(Restrictions.or(Restrictions.eq("name", "wj"), Restrictions.eq("name", "name0")));   
        // 分页   
        c.setFetchSize(10); //从第10条记录起   
        c.setMaxResults(10); //查出10条记录   
  
        //执行查询   
        final List<User> list = c.list();   
        for (final User u : list)   
        {   
            System.out.println(u.getId() + " " + u.getName());   
        }   
    }   
    finally  
    {   
        s.clear();   
    }   
}  

 

 

DetachedCriteria 在构造时不须要Session对象,可以在没有Session时完成拼接查询条件,要执行时才须要Session对象

Java代码 复制代码 收藏代码
  1. //在Action中 拼查询条件   
  2.     public ActionForward Action (....)   
  3.     {    
  4.          DetachedCriteria dc = DetachedCriteria.forClass(User.class);   
  5.          String name = request.getParameter("name");   
  6.            
  7.         //拼查询条件   
  8.          if (name != null)   
  9.             dc.add(Restrictions.eq("name", name));   
  10.          int age = request.getParameter("age");   
  11.          if(age > 0)   
  12.              dc.add(Restrictions.eq("age", age));   
  13.          List users = query(dc);   
  14.     }  
//在Action中 拼查询条件
	public ActionForward Action (....)
	{ 
		 DetachedCriteria dc = DetachedCriteria.forClass(User.class);
		 String name = request.getParameter("name");
		
		//拼查询条件
		 if (name != null)
			dc.add(Restrictions.eq("name", name));
		 int age = request.getParameter("age");
		 if(age > 0)
			 dc.add(Restrictions.eq("age", age));
		 List users = query(dc);
	}

 

Java代码 复制代码 收藏代码
  1. //在DAO层 查询   
  2.      static List query(DetachedCriteria dc)    
  3.      {   
  4.         Session s = HibernateUtil.getSession();   
  5.         Criteria c = dc.getExecutableCriteria(s);  //这时须要一个session   
  6.         List rs = c.list();   
  7.         s.close();   
  8.         return rs;   
  9.     }  
//在DAO层 查询
	 static List query(DetachedCriteria dc) 
	 {
		Session s = HibernateUtil.getSession();
		Criteria c = dc.getExecutableCriteria(s);  //这时须要一个session
		List rs = c.list();
		s.close();
		return rs;
	}

 

分享到:
评论

相关推荐

    DetachedCriteria Criteria 使用方法

    - **使用场景**:`Criteria` 适用于即时查询,而 `DetachedCriteria` 更适合跨层传递查询条件。 - **灵活性**:`DetachedCriteria` 提供了更大的灵活性,可以在不同层之间传递而不会丢失查询状态。 #### 三、`...

    DetachedCriteria查询

    DetachedCriteria 是 Hibernate 中的一种离线查询对象,它可以在不依赖 Session 的情况下生成动态 SQL 语句并进行查询。下面是 DetachedCriteria 查询的详细知识点: 创建 DetachedCriteria 对象 DetachedCriteria...

    Hibernate - DetachedCriteria 的完整用法

    Hibernate 的 Criteria 和 DetachedCriteria 是两个不同的概念,虽然它们都是用于查询数据的,但它们在创建和使用上有所不同。 首先,Criteria 是在线的,需要通过 Hibernate Session 来创建,即使用 `session....

    UN - Manual of Tests and Criteria:2019(Rev7) - 最新英文电子版(536页).pdf

    UN - Manual of Tests and Criteria:2019(Rev7) - 最新英文电子版(536页).pdf

    hibernate02:session对象、hql查询、在线查询也叫对象查询、离线查询

    在Hibernate中,离线查询可以通过`Criteria` API或者`List`、`Query`对象的缓存结果实现。 在提供的链接中,博主可能详细探讨了这些概念,并给出了具体的代码示例。遗憾的是,由于没有具体的内容,我们无法深入分析...

    Hibernate 使用DetachedCriteria操作

    DetachedCriteria 是Hibernate Criteria API 的一部分,主要用于创建可复用的查询逻辑。在DetachedCriteria中定义的查询条件可以在稍后的时间点附加到Session上执行,这使得查询可以脱离当前的Session状态,因此得名...

    Hibernate中Criteria的完整用法

    Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode(联合查询抓取的模式),设置排序方式。对于 Criteria 还可以设置 FlushModel(冲刷 Session 的方式)和 ...

    Hibernate中Criteria的完整用法.docx

    Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode(联合查询抓取的模式)、设置排序方式。对于 Criteria 还可以设置 FlushModel(冲刷 Session 的方式)和 ...

    Criteria连表查询

    Hibernate中的Criteria连表查询,包括单表属性查询,多表内连,以及左外连接查询

    Hibernate中Criteria的使用

    DetachedCriteria 是离线的 Criteria,它可以在 Session 之外创建,提供了 forClass(Class) 或 forEntityName(Name) 两个静态方法来创建 DetachedCriteria 实例。例如,DetachedCriteria detachedCriteria = ...

    Hibernate的Criteria用法总结.doc

    Criteria 是在线的,需要通过 Hibernate Session 创建,而 DetachedCriteria 是离线的,可以在不需要 Session 的情况下创建。DetachedCriteria 提供了静态方法 forClass(Class) 或 forEntityName(Name) 来创建实例。...

    浅谈DetachedCriteria和Criteria的使用方法(必看)

    DetachedCriteria和Criteria是Hibernate框架中两个重要的查询工具,用于动态生成SQL语句,进行查询。在Web编程中,DetachedCriteria和Criteria可以解决动态条件查询的问题,提高程序的灵活性和可维护性。 ...

    Criteria标准化对象查询小例子

    在Java世界中,Criteria API是JPA(Java Persistence API)的一部分,用于构建动态、类型安全的查询。这个“Criteria标准化对象查询小例子”提供了一个实际应用Criteria API的示例,帮助开发者理解如何利用它来执行...

    Criteria使用方法

    - **定义**:`DetachedCriteria`是一种离线的标准查询API,它可以在没有Session的情况下创建并配置查询。 - **创建方式**:通过`DetachedCriteria.forClass(Class)`或`DetachedCriteria.forEntityName(String)`创建...

    Hibernate的Criteria用法总结

    Criteria用于在线查询,直接与Hibernate Session关联,而DetachedCriteria则可在不依赖Session的情况下创建,适用于离线或延迟执行的查询。DetachedCriteria可以通过`forClass(Class)`或`forEntityName(String)`静态...

    Criteria的完整用法.pdf

    - **DetachedCriteria**:为离线创建,不依赖于`Session`。这使得开发者可以在任何地方预定义查询条件,之后再将这些条件应用于`Session`中执行查询,增加了代码的可读性和复用性。`DetachedCriteria`通过`forClass...

    09 Criteria查询方式

    Criteria API还可以与其他查询方式结合使用,比如DetachedCriteria,用于创建可延迟执行的查询,或者与Projection一起使用,获取特定字段的结果,而不仅仅是完整的实体对象。 总的来说,"09 Criteria查询方式"这个...

    Criteria.pdf

    - **灵活性**:两者均提供了高度的灵活性,可以使用`Criterion`和`Projection`来设置查询条件和投影结果,但`DetachedCriteria`的离线特性使其在某些场景下更加灵活。 #### Criterion与Projection详解 - **...

    Hibernate-Criteria 模糊查询

    ### Hibernate-Criteria 模糊查询详解 在Java的持久化技术中,Hibernate作为ORM(对象关系映射)框架的一种,提供了强大的数据访问能力。而其中的`Criteria`接口更是为复杂的查询需求提供了一种灵活且功能强大的...

    Hibernate学习资料(离线查询)

    根据提供的文件信息,我们可以深入探讨Hibernate中的离线查询方法及相关知识点。下面将详细介绍这些知识点。 ### Hibernate中的离线查询 Hibernate是一种广泛使用的Java持久层框架,它极大地简化了数据库操作,...

Global site tag (gtag.js) - Google Analytics