zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    }
  • 相关阅读:
    Codeforces Round #535 (Div. 3) 1108C
    Codeforces Round #536 (Div. 2) B. Lunar New Year and Food Ordering
    Leetcode--136. Single Number(easy)
    Leetcode--572. Subtree of Another Tree(easy)
    Leetcode--101. Symmetric Tree(easy)
    Leetcode--680. Valid Palindrome II(easy)
    2017百度之星资格赛 1003 度度熊与邪恶大魔王 背包DP
    台州 OJ 1704 Cheapest Palindrome 回文 区间DP
    洛谷 P1019 单词接龙 深搜
    UVA 11882 Biggest Number 深搜 剪枝
  • 原文地址:https://www.cnblogs.com/zhang-bo/p/6628519.html
Copyright © 2011-2022 走看看