hibernate中查询方式(一):


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);
        }
    }
}

 

posted on 2017-03-27 19:54  超人不会飞丿  阅读(196)  评论(0编辑  收藏  举报

导航