`

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

阅读更多

 通过Session得到Criteria类的对象

/**  
 * 用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对象

//在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);
	}

 

//在DAO层 查询
	 static List query(DetachedCriteria dc) 
	 {
		Session s = HibernateUtil.getSession();
		Criteria c = dc.getExecutableCriteria(s);  //这时须要一个session
		List rs = c.list();
		s.close();
		return rs;
	}

 

分享到:
评论
1 楼 yizhaorong 2013-09-24  
这种是在什么情况下用呢,好像没见过有人这么用

相关推荐

    DetachedCriteria Criteria 使用方法

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

    DetachedCriteria查询

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

    Hibernate - DetachedCriteria 的完整用法

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

    Hibernate 使用DetachedCriteria操作

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

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

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

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

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

    Hibernate中Criteria的完整用法

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

    Hibernate中Criteria的完整用法.docx

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

    Hibernate中Criteria的使用

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

    Criteria连表查询

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

    Hibernate的Criteria用法总结.doc

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

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

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

    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...

    Criteria标准化对象查询小例子

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

    09 Criteria查询方式

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

    Hibernate学习资料(离线查询)

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

    Criteria.pdf

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

    Hibernate-Criteria 模糊查询

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

Global site tag (gtag.js) - Google Analytics