下面我将为你详细讲解使用Criteria进行分组求和、排序、模糊查询的完整攻略。
一、Criteria的概述
Hibernate 中的 Criteria 查询是为了解决 HQL 表达式中所没有解决的灵活的高级查询,也可以免去写 SQL 的烦恼,使用标准的方式,所有的查询条件都封装成一个对象。 Criteria 对象可以通过 Restrictions 的静态方法得到一个简单的查询对象,通过指定 Restrictions 的条件来细化查询条件。
二、Criteria的用法
1. Criteria 语法和基本使用方式
Criteria 查询的语法规则如下:
DetachedCriteria criteria = DetachedCriteria.forClass(YourClassName.class);
具体使用案例如下:
// 获取一个 Session 对象
Session session = sessionFactory.openSession();
// 获取 Criteria 对象
Criteria criteria = session.createCriteria(YourClassName.class);
// 查询所有结果
List<YourClassName> results = criteria.list();
2. Criteria 的分组查询
Criteria 查询可以通过 Projections.groupProperty() 方法实现分组查询。示例代码如下:
Criteria criteria = session.createCriteria(YourClassName.class)
.setProjection(Projections.sum("number"))
.addOrder(Order.desc("createDate"))
.add(Restrictions.between("createDate", startDate, endDate))
.add(Restrictions.eq("status", status))
.add(Restrictions.groupProperty("type"));
List<Object[]> list = criteria.list();
3. Criteria 的求和查询
Criteria 查询可以通过 Projections.sum() 方法实现求和查询。示例代码如下:
Criteria criteria = session.createCriteria(YourClassName.class)
.setProjection(Projections.sum("number"));
.add(Restrictions.eq("status", "active"));
Long sum = (Long) criteria.uniqueResult();
4. Criteria 的排序查询
Criteria 查询可以通过 Order() 方法实现排序查询。示例代码如下:
Criteria criteria = session.createCriteria(YourClassName.class)
.addOrder(Order.desc("createDate"));
5. Criteria 的模糊查询
Criteria 查询可以通过 Restrictions.like() 方法实现模糊查询。示例代码如下:
Criteria criteria = session.createCriteria(YourClassName.class)
.add(Restrictions.like("name", "test%", MatchMode.ANYWHERE));
以上就是使用 Criteria 进行分组求和、排序、模糊查询的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Criteria进行分组求和、排序、模糊查询的实例 - Python技术站