@SuppressWarnings("unchecked")
public List<FactoryBean> searchFactoryListByPaging(final int start,
final int limit, final FactoryBean factoryBean) {
return (List<FactoryBean>) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria criteria = session
.createCriteria(FactoryBean.class);
// 條件
if (null != factoryBean) {
if (null != factoryBean.getFullName()
&& !"".equals(factoryBean.getFullName())) {
criteria.add(Restrictions.like("fullName",
factoryBean.getFullName(),
MatchMode.ANYWHERE));
criteria.add(Restrictions.like("simpleName",
factoryBean.getFullName(),
MatchMode.ANYWHERE));
criteria.add(Restrictions.like("unifyName",
factoryBean.getFullName(),
MatchMode.ANYWHERE));
}
if (null != factoryBean.getChargeMan()
&& !"".equals(factoryBean.getChargeMan())) {
criteria.add(Restrictions.like("chargeMan",
factoryBean.getChargeMan(),
MatchMode.ANYWHERE));
}
if (null != factoryBean.getContactMan()
&& !"".equals(factoryBean.getContactMan())) {
criteria.add(Restrictions.like("contactMan",
factoryBean.getContactMan(),
MatchMode.ANYWHERE));
}
if (null != factoryBean.getEmail()
&& !"".equals(factoryBean.getEmail())) {
criteria.add(Restrictions.like("email",
factoryBean.getEmail(),
MatchMode.ANYWHERE));
}
if (null != factoryBean.getFactoryAdderss()
&& !"".equals(factoryBean
.getFactoryAdderss())) {
criteria.add(Restrictions.like(
"factoryAdderss", factoryBean
.getFactoryAdderss(),
MatchMode.ANYWHERE));
}
if (null != factoryBean.getRemark()
&& !"".equals(factoryBean.getRemark())) {
criteria.add(Restrictions.like("remark",
factoryBean.getRemark(),
MatchMode.ANYWHERE));
}
if (null != factoryBean.getBizFactorytype()) {
criteria.add(Restrictions.eq("bizFactorytype",
factoryBean.getBizFactorytype()));
}
}
criteria.add(Restrictions.in("status",
new Integer[] { 1 }));
criteria.addOrder(Order.desc("factoryId"));
criteria.setFirstResult(start).setMaxResults(limit);
return criteria.list();
}
});
}
分享到:
相关推荐
QBC,全称为Query By Criteria,是Java世界中一种基于对象的查询方式,主要用于简化Hibernate框架中的数据查询操作。QBC提供了一种面向对象的方式来构建查询条件,与SQL语句相比,它更易于理解和维护,尤其在处理...
4. **Join操作**:在QBC中,可以方便地进行内连接(Inner Join)、左连接(Left Outer Join)以及其他类型的连接操作,以处理多表关联查询。 5. **子查询**:QBC允许我们在查询中嵌套其他查询,这在处理复杂的业务...
4. **关联查询**:支持一对一、一对多、多对一、多对多等关联关系的查询,可以轻松处理复杂的数据结构。 5. **投影与转换**:可以用Criteria的setProjection()方法选择查询返回的结果集,甚至可以将结果转换为自定义...
- **关联查询**:Criteria API支持一对一、一对多、多对一、多对多的关联查询,可以通过createCriteria()方法添加关联实体,然后设置关联条件。 - **投影(Projection)**:Projection接口用于定义查询结果的返回...
- 查询时,需要联合查询多个表来获取完整信息。 #### 三种策略的比较 - **Table per Concrete Class**:易于理解和实现,但可能会导致较多的表数量。 - **Table per Class Hierarchy**:表数量较少,适合于子类间...
总的来说,Hibernate的`Criteria`、`Query`以及QBC(Query By Criteria)提供了灵活且强大的查询手段,它们不仅支持基本的单表查询,还能处理复杂的联表、分页、参数绑定和统计需求,是Java开发者进行数据库操作的...
本文将深入探讨Hibernate的查询方式,特别聚焦于HQL(Hibernate Query Language)查询方式以及QBC(Query By Criteria)查询方式,旨在帮助读者全面理解并掌握这些核心功能。 #### HQL查询方式:面向对象的查询语言...
1. **多表关联查询**:对于复杂的多表关联查询,建议使用QBC,因为它能更好地组织代码结构,提高可读性和可维护性。 2. **性能考虑**:当需要频繁执行大量查询时,可以考虑使用HQL,利用其简洁性快速构建查询。同时...
4. **Criteria查询**:Criteria API是一种完全面向对象的查询方式,也称为QBC(Query By Criteria)。它允许开发者动态构建查询,无需预先知道查询的具体形式。 5. **SQLQuery**:对于HQL无法满足的复杂SQL查询需求...
在测试过程中,我们应关注查询性能、事务处理、异常处理以及实体关联的正确性。 接下来,让我们看看`源码`层面。深入Hibernate的源码可以帮助我们理解其内部工作流程,比如查询解析、SQL生成、执行计划制定等。例如...
在Java的Hibernate框架中,Criteria API提供了一种用于动态构建查询的方法,它是Query By Criteria(QBC)查询方式的一部分。这种方式允许开发者避开编写HQL(Hibernate Query Language)语句,而是通过API调用来...
HQL可以方便地进行复杂的查询,包括关联查询、分组、排序等。例如,如果你有一个`User`类,你可以通过以下HQL查询所有用户: ```java String hql = "from User"; List<User> users = session.createQuery(hql).list...
Hibernate提供了三种主要的查询方式:SQL、HQL(Hibernate Query Language)和QBC(Query by Criteria)。 1. SQL查询: Hibernate支持直接执行SQL语句,这使得开发者可以充分利用数据库的特性和性能。通过`...
HQL允许进行简单的单表查询、关联查询、聚合函数以及子查询。例如,查询所有用户信息: ```sql SELECT u FROM User u ``` 或带有条件的查询: ```sql SELECT u FROM User u WHERE u.email = 'example@example.com' `...
- 可以通过子句实现对多个表的联合查询。 - 示例:查询学生及其所在班级的信息。 ```java String hql = "select s.stuId, s.stuName, b.banjiName from Student s, Banji b where s.banji.banjiId = b.banjiId";...
QBC允许开发者通过构建查询标准对象来表达查询逻辑,而不是编写查询语句。这种方式更加灵活,同时也支持复杂查询。 ##### 5. 本地SQL检索方式 本地SQL检索方式是指直接使用数据库特定的SQL查询语句来进行数据检索...
导航对象图检索是一种常见的对象关联查询方式。这种方式通常用于加载已经存在于内存中的对象,并通过这些对象访问与其关联的对象。例如,在一个订单(Order)与商品(Product)之间存在一对多的关系时,可以通过已经...
QBC 是一种使用 Query By Criteria API 来检索对象的方式,该 API 封装了基于字符串形式的查询语句,提供了更加面向对象的查询接口。 session.createCriteria(Xxx.class); 五、本地 SQL 检索 本地 SQL 检索是使用...