📅  最后修改于: 2023-12-03 14:41:43.485000             🧑  作者: Mango
在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的条件查询功能可以让我们更高效地开发应用程序。