HQL查询语句:一般用于多表但不复杂的查询。(Hibernate Query Language)
Criteria查询语句:一般用于单表查询。(Query By Criteria)
原生SQL语句:一般用于复杂的查询。
Test.java:
package cn.xxx.demo;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;
import cn.xxx.domain.Customer;
import cn.xxx.utils.HibernateUtils;
//测试Criteria查询 (无语句面向对象查询)
public class Test {
@Test
//基本查询
public void fun1(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
//-------------------------------------------
//查询所有的Customer对象
Criteria criteria = session.createCriteria(Customer.class);
List<Customer> list = criteria.list();
//Customer c = (Customer) criteria.uniqueResult(); // 查询结果只有一条记录。
System.out.println(list);
//-------------------------------------------
tx.commit();
session.close();
}
@Test
//条件查询
// > gt
// >= ge
// < lt
// <= le
// == eq
// != ne
// in in
// between and between
// like like
// is not null isNotNull
// is null isNull
// or or
// and and
public void fun2(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
//-------------------------------------------
//创建criteria查询对象
Criteria criteria = session.createCriteria(Customer.class);
//添加查询参数 => 查询cust_id为1的Customer对象
criteria.add(Restrictions.eq("cust_id", 1l));
//执行查询,获得结果
Customer c = (Customer) criteria.uniqueResult();
System.out.println(c);
//-------------------------------------------
tx.commit();
session.close();
}
@Test
//分页查询
public void fun3(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
//-------------------------------------------
Criteria criteria = session.createCriteria(Customer.class);
//设置分页信息 limit ?,?
criteria.setFirstResult(0);
criteria.setMaxResults(10); // 每页显示条数
List<Customer> list = criteria.list();
System.out.println(list);
//-------------------------------------------
tx.commit();
session.close();
}
@Test
//查询总记录数 (聚合函数)
public void fun4(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
//-------------------------------------------
Criteria criteria = session.createCriteria(Customer.class);
//设置查询的聚合函数 => 总记录数
criteria.setProjection(Projections.rowCount());
//执行查询
Long count = (Long) criteria.uniqueResult();
System.out.println(count);
//-------------------------------------------
tx.commit();
session.close();
}
}