04Hibernate查询

  • Query对象查询
  • Criteria对象查询
  • SQLQuery对象查询

一、Query对象

  • 使用query对象,不需要写SQL语句,但是需要些hql语句
  1. hql:hibernate query language,hibernate提供查询语言,hql语句和SQL语句很相似;
  2. hql和SQL语句的区别
    • 使用SQL操作表和字段
    • 使用hql操作实体类和属性
  • 使用hql查询所有 
    • from 实体类名称
  • Query对象的使用
  1. 创建Query对象;
  2. 调用Query对象中的方法查询结果
     1     public void testQuery() {
     2          SessionFactory sessionFactory = null;
     3          Session session = null;
     4          Transaction tx = null;
     5          try {
     6              sessionFactory = HibernateUtils.getSessionFactory();
     7              session =HibernateUtils.getCurrentSession();
     8              
     9              tx = session.beginTransaction();
    10              
    11              //1、创建query对象
    12              Query query = session.createQuery("from User");
    13              //2.得到查询结果 
    14              List<User> list = query.list();
    15              for (User user : list) {
    16                 System.out.println(user);
    17             }
    18              tx.commit();
    19              
    20          }catch(Exception exception) {
    21              exception.printStackTrace();
    22              tx.rollback();
    23          }finally {
    24              
    25          }
    26     }
    View Code

二、Criteria对象 

 1     public void testCriteria() {
 2          SessionFactory sessionFactory = null;
 3          Session session = null;
 4          Transaction tx = null;
 5          try {
 6              sessionFactory = HibernateUtils.getSessionFactory();
 7              session =HibernateUtils.getCurrentSession();
 8              
 9              tx = session.beginTransaction();
10              
11              //创建criteria对象
12              Criteria criteria = session.createCriteria(User.class);
13              List<User> list = criteria.list();
14              
15              for (User user : list) {
16                 System.out.println(user);
17             }
18              tx.commit();
19              
20          }catch(Exception exception) {
21              exception.printStackTrace();
22              tx.rollback();
23          }finally {
24              
25          }
26     }
View Code

三、SQLQuery对象

  1. 在使用hibernate的SQLquery对象时调用底层sql来实现功能;
  2. 实现过程
    1. 创建对象
    2. 调用对象的方法
 1     public void testSqlQuery() {
 2          SessionFactory sessionFactory = null;
 3          Session session = null;
 4          Transaction tx = null;
 5          try {
 6              sessionFactory = HibernateUtils.getSessionFactory();
 7              session =HibernateUtils.getCurrentSession();
 8              
 9              tx = session.beginTransaction();
10              
11              //创建criteria对象
12              SQLQuery sqlQuery = session.createSQLQuery("select * from tab_users");
13              
14              /*List<Object[]> list = sqlQuery.list();
15              
16              for (Object[] object : list) {
17                 System.out.println(Arrays.toString(object));
18             }*/
19              
20              sqlQuery.addEntity(User.class);
21              List<User> list = sqlQuery.list();
22              for (User user : list) {
23                  System.out.println(list);
24             }
25              tx.commit();
26              
27          }catch(Exception exception) {
28              exception.printStackTrace();
29              tx.rollback();
30          }finally {
31              
32          }
33     }
View Code
原文地址:https://www.cnblogs.com/kispine/p/8910512.html