通过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;
}
分享到:
相关推荐
- **使用场景**:`Criteria` 适用于即时查询,而 `DetachedCriteria` 更适合跨层传递查询条件。 - **灵活性**:`DetachedCriteria` 提供了更大的灵活性,可以在不同层之间传递而不会丢失查询状态。 #### 三、`...
DetachedCriteria 是 Hibernate 中的一种离线查询对象,它可以在不依赖 Session 的情况下生成动态 SQL 语句并进行查询。下面是 DetachedCriteria 查询的详细知识点: 创建 DetachedCriteria 对象 DetachedCriteria...
Hibernate 的 Criteria 和 DetachedCriteria 是两个不同的概念,虽然它们都是用于查询数据的,但它们在创建和使用上有所不同。 首先,Criteria 是在线的,需要通过 Hibernate Session 来创建,即使用 `session....
DetachedCriteria 是Hibernate Criteria API 的一部分,主要用于创建可复用的查询逻辑。在DetachedCriteria中定义的查询条件可以在稍后的时间点附加到Session上执行,这使得查询可以脱离当前的Session状态,因此得名...
在Hibernate中,离线查询可以通过`Criteria` API或者`List`、`Query`对象的缓存结果实现。 在提供的链接中,博主可能详细探讨了这些概念,并给出了具体的代码示例。遗憾的是,由于没有具体的内容,我们无法深入分析...
UN - Manual of Tests and Criteria:2019(Rev7) - 最新英文电子版(536页).pdf
Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode(联合查询抓取的模式),设置排序方式。对于 Criteria 还可以设置 FlushModel(冲刷 Session 的方式)和 ...
Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode(联合查询抓取的模式)、设置排序方式。对于 Criteria 还可以设置 FlushModel(冲刷 Session 的方式)和 ...
DetachedCriteria 是离线的 Criteria,它可以在 Session 之外创建,提供了 forClass(Class) 或 forEntityName(Name) 两个静态方法来创建 DetachedCriteria 实例。例如,DetachedCriteria detachedCriteria = ...
Hibernate中的Criteria连表查询,包括单表属性查询,多表内连,以及左外连接查询
Criteria 是在线的,需要通过 Hibernate Session 创建,而 DetachedCriteria 是离线的,可以在不需要 Session 的情况下创建。DetachedCriteria 提供了静态方法 forClass(Class) 或 forEntityName(Name) 来创建实例。...
DetachedCriteria和Criteria是Hibernate框架中两个重要的查询工具,用于动态生成SQL语句,进行查询。在Web编程中,DetachedCriteria和Criteria可以解决动态条件查询的问题,提高程序的灵活性和可维护性。 ...
- **定义**:`DetachedCriteria`是一种离线的标准查询API,它可以在没有Session的情况下创建并配置查询。 - **创建方式**:通过`DetachedCriteria.forClass(Class)`或`DetachedCriteria.forEntityName(String)`创建...
Criteria用于在线查询,直接与Hibernate Session关联,而DetachedCriteria则可在不依赖Session的情况下创建,适用于离线或延迟执行的查询。DetachedCriteria可以通过`forClass(Class)`或`forEntityName(String)`静态...
- **DetachedCriteria**:为离线创建,不依赖于`Session`。这使得开发者可以在任何地方预定义查询条件,之后再将这些条件应用于`Session`中执行查询,增加了代码的可读性和复用性。`DetachedCriteria`通过`forClass...
在Java世界中,Criteria API是JPA(Java Persistence API)的一部分,用于构建动态、类型安全的查询。这个“Criteria标准化对象查询小例子”提供了一个实际应用Criteria API的示例,帮助开发者理解如何利用它来执行...
Criteria API还可以与其他查询方式结合使用,比如DetachedCriteria,用于创建可延迟执行的查询,或者与Projection一起使用,获取特定字段的结果,而不仅仅是完整的实体对象。 总的来说,"09 Criteria查询方式"这个...
根据提供的文件信息,我们可以深入探讨Hibernate中的离线查询方法及相关知识点。下面将详细介绍这些知识点。 ### Hibernate中的离线查询 Hibernate是一种广泛使用的Java持久层框架,它极大地简化了数据库操作,...
- **灵活性**:两者均提供了高度的灵活性,可以使用`Criterion`和`Projection`来设置查询条件和投影结果,但`DetachedCriteria`的离线特性使其在某些场景下更加灵活。 #### Criterion与Projection详解 - **...
### Hibernate-Criteria 模糊查询详解 在Java的持久化技术中,Hibernate作为ORM(对象关系映射)框架的一种,提供了强大的数据访问能力。而其中的`Criteria`接口更是为复杂的查询需求提供了一种灵活且功能强大的...