Hibernate之HQL语言查询

创建HibernateUtils类,便于直接获取session

 1 package com.utils;
 2 
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.cfg.Configuration;
 6 
 7 public class HibernateUtils {
 8     private static SessionFactory sessionFactory;
 9     static {
10         Configuration configuration = new Configuration().configure();
11         //根据配置信息,创建SessionFactory对象
12         sessionFactory = configuration.buildSessionFactory();
13     }
14 
15     //获得session=>获得全新session
16     public static Session openSession(){
17         //获得session
18         Session session = sessionFactory.openSession();
19         return session;
20     }
21 
22     //获得session=>获得与线程绑定的session
23     public static Session getCurrentSession(){
24         Session session = sessionFactory.getCurrentSession();
25         return session;
26     }
27 
28 
29 
30 
31 }

基本查询

 1 @Test
 2     public void test_01(){
 3         //获得session对象
 4         Session session = HibernateUtils.openSession();
 5         Transaction transaction = session.beginTransaction();
 6         String hql = "from Customer";
 7         Query query = session.createQuery(hql);
 8         List<Customer> list = query.list();
 9         System.out.println(list);
10         transaction.commit();
11         //transaction.rollback();
12         session.close();
13 
14     }

条件查询之使用'?'占位符

 1 @Test
 2     public void test_02(){
 3         Session session = HibernateUtils.openSession();
 4         Transaction transaction = session.beginTransaction();
 5         //-----------------------------------------
 6         String hql = "from Customer where cust_id = ?0";
 7         Query query = session.createQuery(hql);
 8         query.setParameter(0,3l);
 9         Customer cs = (Customer) query.uniqueResult();
10 
11         /**
12          * 此处hql语句中的占位符若写成以下格式则会报错,貌似是因为Hibernate版本较高不支持
13          *  String hql = "from Customer where cust_id = 0";
14          *  Query query = session.createQuery(hql);
15          *  query.setParameter(0,3l);
16          *  Customer cs = (Customer) query.uniqueResult();
17          */
18 
19         //-------------------------------------------
20         System.out.println(cs);
21         transaction.commit();
22         session.close();
23 
24     }

条件查询之使用':name'占位符

 1 @Test
 2     public void test_03(){
 3         //使用占位符 :name
 4         Session session = HibernateUtils.openSession();
 5         Transaction transaction = session.beginTransaction();
 6         String hql = "from Customer where cust_id = :cust_id";
 7         Query query = session.createQuery(hql);
 8         query.setParameter("cust_id",1l);
 9         Customer customer = (Customer) query.uniqueResult();
10         System.out.println(customer);
11         transaction.commit();
12         session.close();
13     }

猜你喜欢

转载自www.cnblogs.com/kongieg/p/10648715.html
今日推荐