Hibernate之HQL语言查询
创建HibernateUtils类,便于直接获取session
package com.utils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
private static SessionFactory sessionFactory;
static {
Configuration configuration = new Configuration().configure();
//根据配置信息,创建SessionFactory对象
sessionFactory = configuration.buildSessionFactory();
}
//获得session=>获得全新session
public static Session openSession(){
//获得session
Session session = sessionFactory.openSession();
return session;
}
//获得session=>获得与线程绑定的session
public static Session getCurrentSession(){
Session session = sessionFactory.getCurrentSession();
return session;
}
}
基本查询
@Test
public void test_01(){
//获得session对象
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql = "from Customer";
Query query = session.createQuery(hql);
List<Customer> list = query.list();
System.out.println(list);
transaction.commit();
//transaction.rollback();
session.close();
}
条件查询之使用'?'占位符
@Test
public void test_02(){
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
//-----------------------------------------
String hql = "from Customer where cust_id = ?0";
Query query = session.createQuery(hql);
query.setParameter(0,3l);
Customer cs = (Customer) query.uniqueResult();
/**
* 此处hql语句中的占位符若写成以下格式则会报错,貌似是因为Hibernate版本较高不支持
* String hql = "from Customer where cust_id = 0";
* Query query = session.createQuery(hql);
* query.setParameter(0,3l);
* Customer cs = (Customer) query.uniqueResult();
*/
//-------------------------------------------
System.out.println(cs);
transaction.commit();
session.close();
}
条件查询之使用':name'占位符
@Test
public void test_03(){
//使用占位符 :name
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql = "from Customer where cust_id = :cust_id";
Query query = session.createQuery(hql);
query.setParameter("cust_id",1l);
Customer customer = (Customer) query.uniqueResult();
System.out.println(customer);
transaction.commit();
session.close();
}
分页查询:
@Test public void test_04(){ Session session = HibernateUtils.openSession(); Transaction transaction = session.beginTransaction(); String hql = "from Customer"; Query query = session.createQuery(hql); query.setFirstResult(0);//设置分页查询起始位置,下标从0开始 query.setMaxResults(3);//设置一次查询多少条记录 List<Customer> list = query.list(); System.out.println(list); }
浙公网安备 33010602011771号