创建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 }