📜  Hibernate – 条件查询(1)

📅  最后修改于: 2023-12-03 14:41:43.485000             🧑  作者: Mango

Hibernate - 条件查询

在Hibernate中,我们可以使用条件查询来获取满足特定条件的数据。条件查询可以让我们通过多个限制条件筛选出符合要求的数据,并且可以对查询结果进行排序和分页等处理。

基本查询

下面是使用Hibernate进行基本查询的示例代码:

Criteria criteria = session.createCriteria(Student.class);
List<Student> students = criteria.list();

在上面的代码中,我们使用Criteria来创建一个查询条件,然后调用list()方法来获取符合条件的数据。如果我们想要获取单个对象,可以使用以下代码:

Criteria criteria = session.createCriteria(Student.class);
criteria.add(Restrictions.eq("id", 1));
Student student = (Student) criteria.uniqueResult();

在上面的代码中,我们使用add()方法添加一个查询条件,然后使用uniqueResult()方法来获取单个对象。eq()方法表示相等条件。

筛选条件

我们可以使用许多不同的筛选条件来进行查询,例如:

  • 相等查询 eq()
  • 不等查询 ne()
  • 大于查询 gt()
  • 大于等于查询 ge()
  • 小于查询 lt()
  • 小于等于查询 le()
  • 模糊查询 like()
  • 范围查询 between()
  • 根据多个条件查询 and(), or()

下面是使用不同筛选条件进行查询的示例代码:

Criteria criteria = session.createCriteria(Student.class);
criteria.add(Restrictions.eq("name", "Tom"));

Criteria criteria = session.createCriteria(Student.class);
criteria.add(Restrictions.ne("name", "Tom"));

Criteria criteria = session.createCriteria(Student.class);
criteria.add(Restrictions.gt("age", 20));

Criteria criteria = session.createCriteria(Student.class);
criteria.add(Restrictions.ge("age", 20));

Criteria criteria = session.createCriteria(Student.class);
criteria.add(Restrictions.lt("age", 20));

Criteria criteria = session.createCriteria(Student.class);
criteria.add(Restrictions.le("age", 20));

Criteria criteria = session.createCriteria(Student.class);
criteria.add(Restrictions.like("name", "%Tom%"));

Criteria criteria = session.createCriteria(Student.class);
criteria.add(Restrictions.between("age", 18, 22));

Criteria criteria = session.createCriteria(Student.class);
criteria.add(Restrictions.and(
    Restrictions.eq("name", "Tom"),
    Restrictions.ge("age", 18)
));

Criteria criteria = session.createCriteria(Student.class);
criteria.add(Restrictions.or(
    Restrictions.eq("name", "Tom"),
    Restrictions.eq("name", "Jerry")
));
排序

我们可以使用addOrder()方法来对查询结果进行排序。这个方法需要传递一个参数,告诉Hibernate如何排序。

以下是使用addOrder()方法对查询结果进行排序的示例代码:

Criteria criteria = session.createCriteria(Student.class);
criteria.addOrder(Order.asc("age"));

Criteria criteria = session.createCriteria(Student.class);
criteria.addOrder(Order.desc("age"));
分页

我们可以使用setFirstResult()setMaxResults()方法来实现分页。setFirstResult()方法用于设置起始位置,setMaxResults()方法用于设置每页显示的数据量。

以下是使用setFirstResult()setMaxResults()方法进行分页查询的示例代码:

Criteria criteria = session.createCriteria(Student.class);
criteria.setFirstResult(0);
criteria.setMaxResults(10);
List<Student> students = criteria.list();
总结

Hibernate的条件查询功能可以让我们更方便地获取满足条件的数据。我们可以使用多种不同的筛选条件来进行查询,也可以对查询结果进行排序和分页处理。了解Hibernate的条件查询功能可以让我们更高效地开发应用程序。