这段代码是项目中的一个方法使用DetachedCriteria构建动态查询
public List searchInfo(final Page page, final AccountView accountView) {
DetachedCriteria dct = DetachedCriteria.forClass(AccountView.class);
if(accountView != null){
if(accountView.getAccountName() != null && !"".equals(accountView.getAccountName().trim())){
dct.add(Restrictions.like("accountName", accountView.getAccountName(),MatchMode.ANYWHERE));
}
if(accountView.getNameCN() != null && !"".equals(accountView.getNameCN().trim())){
dct.add(Restrictions.like("nameCN", accountView.getNameCN(),MatchMode.ANYWHERE));
}
if(accountView.getDepartmentId() != null && accountView.getDepartmentId()>0){
dct.add(Restrictions.eq("departmentId", accountView.getDepartmentId()));
dct.add(Restrictions.eq("companyId", accountView.getCompanyId()));
}else if(accountView.getCompanyId() != null && accountView.getCompanyId().intValue()>0){
dct.add(Restrictions.eq("companyId", accountView.getCompanyId()));
}
if(accountView.getEmail() != null && !"".equals(accountView.getEmail().trim())){
dct.add(Restrictions.like("email", accountView.getEmail(),MatchMode.ANYWHERE));
}
if(accountView.getUserPosition() != null && !"".equals(accountView.getUserPosition().trim())){
dct.add(Restrictions.like("userPosition", accountView.getUserPosition(),MatchMode.ANYWHERE));
}
}
if(page == null){
return super.findByCriteria(dct);
}else{
return super.findByCriteria(dct, page);
}
}
分享到:
相关推荐
DetachedCriteria是Hibernate提供的一种灵活、可复用的查询工具,它允许开发者在不同上下文中构建和执行查询。理解并熟练运用DetachedCriteria,有助于提升代码的可维护性和性能。在实际开发中,结合其他Hibernate...
`DetachedCriteria` 是 Hibernate 提供的一种灵活且强大的查询机制,它允许你在脱离 Session 的情况下构建复杂的查询标准,这意味着你可以提前构建查询标准,然后在任何地方执行查询,而无需关心当前是否有 Session...
在Java的持久化框架Hibernate中,DetachedCriteria是一个强大的查询工具,它允许我们在不与Session交互的情况下构建查询条件。然而,DetachedCriteria在处理复杂的关联查询,尤其是涉及到表连接(JOIN)时,可能存在...
`DetachedCriteria` 提供了一种高效且灵活的方式来处理动态查询需求,特别是在多层架构的应用程序中,它能够显著降低各层之间的耦合度,提高代码的可维护性和扩展性。通过合理使用 `DetachedCriteria` 和 `...
本文将详细介绍Hibernate的五种查询方式,包括HQL查询、Criteria方法、动态查询DetachedCriteria、例子查询、SQL查询以及命名查询,以满足不同场景下的需求。 1. HQL查询: Hibernate Query Language(HQL)是一种...
7. **动态查询**:QBC的动态性体现在可以根据运行时的参数灵活构造查询条件,非常适合在用户输入不确定的情况下构建查询。 在实际开发中,QBC与Hibernate的其他查询方式,如HQL(Hibernate Query Language)和...
Criteria API提供了一种更为灵活和强大的查询方式,它基于标准的Java对象模型来构建查询条件,支持动态创建查询条件。 **特点:** - **面向对象:** Criteria API完全基于对象,这使得它更加灵活和强大。 - **动态...
在Java的持久化框架Hibernate中,Criteria API是一个强大的查询工具,它可以用来构建动态和复杂的查询。Criteria API的主要优点在于它的灵活性,允许开发者在运行时构建查询,而不必预先定义HQL(Hibernate Query ...
2. **DetachedCriteria**:这是一个离线查询对象,可以在不与Session交互的情况下构建查询条件,然后在需要的时候再与Session结合执行,这对于延迟加载和构建复杂的查询非常有用。 3. **Criteria查询的构建**:包括...
在实际开发中,Hibernate Criteria查询提供了很大的便利性,尤其是在处理动态查询和复杂查询时。通过熟练掌握Criteria API,可以编写出更简洁、更易于维护的代码。希望这份资料能帮助你更好地理解和运用Hibernate的...
同时,HQL支持动态查询,可以根据参数动态构造查询语句,适合于复杂或动态的查询需求。 - **基本结构**:HQL查询通常以`from`开始,后面跟着实体类的名称。可以使用`select`指定返回的结果,`where`后跟查询条件,`...
Criteria API的优点在于代码可读性高,且支持动态构建查询条件。 ### 三、QBC(Query By Example) QBC是一种基于实例的查询方式,它允许你通过一个对象实例来定义查询条件。以下是一个使用QBC的例子: ```java ...
使用Criteria,你可以动态地构建查询,如下: ```java Criteria criteria = session.createCriteria(User.class); criteria.setProjection(Projections.property("username")); List<String> usernames = criteria....
Criteria API提供了更面向对象的查询方式,通过`DetachedCriteria`构建查询条件,然后通过`session.createCriteria()`执行查询。 ### 练习题二:查询特定时间段内入职的员工 #### SQL查询 ```sql SELECT d.ename ...
Hibernate中的Criteria API是一种用于执行动态查询的机制,它允许开发者在运行时构建SQL查询,而无需直接编写SQL语句。Criteria API提供了更加面向对象的方式来处理数据库查询,这使得代码更易于理解和维护,尤其是...
Criterion是Hibernate提供的一种动态查询机制,允许我们在运行时构建查询条件,而无需手动编写SQL语句。这一特性使得程序具有更好的可维护性和灵活性,尤其在处理复杂的查询逻辑时,Criterion的优势更加明显。 首先...
- **DetachedCriteria** 是 Hibernate 提供的一个用于构建查询的 API,可以创建灵活且可重用的查询对象。 - **Restrictions.eq()** 用于添加等于约束。 - **Projections.projectionList()** 和 **Projections.max()*...
在Java持久层框架Hibernate中,Criteria API是一种动态构建SQL查询的方法,它允许开发者在运行时构建查询,提供了更面向对象的查询方式。本篇将详细阐述Hibernate Criteria API的使用。 首先,Criteria API由...
2. **动态构建查询**:由于其API是基于方法的,可以方便地根据条件动态构建查询,非常适合在条件不固定或者复杂的查询场景。 3. **可重用性**:查询逻辑可以通过封装为方法的方式进行复用,提高代码的组织性和可维护...
在Java的持久化框架Hibernate中,Criteria API是一种用于构建动态查询的强大工具,它允许开发者以对象化的方式构建SQL语句,而无需直接编写SQL代码。本篇将详细讲解如何在Hibernate中利用Criteria查询来实现类似SQL...