Hibernate中的查询方式:
1,SQL(Structure Query Language): 在hibernate中允许使用原生的SQL直接查询;
使用session.createSQLQuery来创建基于SQL的查询,查询出来的结果是装有Object[]的集合;
@Test public void testSQLQuery() { Session session = BuildSesssionFactory.getSession(); // SQL 普通的SQL查询语句 String sql= "select * from student where age between ? and ?" SQLQuery createSQLQuery = session.createSQLQuery(sql); //设置SQL语句中的参数 此时的0,1为相对应的?的值 createSQLQuery.setParameter(0, 18); createSQLQuery.setParameter(1, 20); List<Object[]> list = createSQLQuery.list(); for (Object[] objects : list) { System.out.println(Arrays.toString(objects)); } }
2,HQL(Hibernate Query Language): 使用hibernate提供的面向对象的查询语句;
- 使用session.createQuery来创建基于HQL的查询
- HQL借鉴了SQL的语法结构,把SQL中关系模型的概念替换成面向对象的概念
@Test public void testHQLQuery() { Session session = BuildSesssionFactory.getSession(); // HQL 使用hibernate提供的面向对象的查询语句;
此时的Student为对象 stu.age为Student对象的属性 String sql = "select stu from Student stu where stu.age between ? and ?"; Query createQuery = session.createQuery(sql); createQuery.setParameter(0, 18); createQuery.setParameter(1, 20); List<Student> list = createQuery.list(); for (Student student : list) { System.out.println(student); } }
3,Criteria: hibernate提供的`完全`面向对象的查询方式;
public void testCriteriaQuery() { Session session = BuildSesssionFactory.getSession(); // Criteria hibernate提供的`完全`面向对象的查询方式; Criteria createCriteria = session.createCriteria(Student.class); //设置约束条件Restrictions createCriteria.add(Restrictions.between("age", 18, 20)); List<Student> list = createCriteria.list(); for (Student student : list) { System.out.println(student); } } }