Session session = sessionFactory.openSession(); Query query = session.createQuery("from User user where user.name='caterpillar'"); List names = query.list(); Iterator iterator = names.iterator(); while(iterator.hasNext()) { User user = (User) iterator.next(); System.out.println(user.getAge() + "\t" + user.getName()); }也可以在where子句上进行表达式,例如:
Query query = session.createQuery("from User user where (user.age / 10 = 3)");也可以在where子句上使用and、or,例如:
Query query = session.createQuery("from User user where (user.age > 20) and (user.name = 'caterpillar')");is not nullL与is null则可以测试字段值是否为空值,例如:
Query query = session.createQuery("from User user where user.name is not null");
Query query = session.createQuery("from User user where user.age between 20 and 30");
Query query = session.createQuery("from User user where user.name in('caterpillar', 'momor')");
Query query = session.createQuery("from User user where user.name like 'cater%'");
Query query = session.createQuery("from User user order by user.age");
Query query = session.createQuery("from User user order by user.age desc");
Query query = session.createQuery("from User user order by user.age desc, user.name");可以配合GROUP BY子句,自动将指定的字段依相同的内容群组,例如依字段"sex"分组并作平均:
Query query = session.createQuery("select user.sex, avg(user.age) from User user group by user.sex");
+-------------------------------+ | sex | avg(age) | +-------------------------------+ | male | 30 | +-------------------------------+ | female | 25 | +-------------------------------+ |
Query query = session.createQuery("select user.sex, avg(user.age) from User user group by user.sex having avg(user.age) > 20");