Hibernate之criteria查询方式

    Criteria是一种比hql更面向对象的查询方式。Criteria 可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode( 联合查询抓取的模式 ) ,设置排序方式,Criteria 还可以设置 FlushModel (冲刷 Session 的方式)和 LockMode接下来用一个测试来感受一下。

package cn.liangce.criteria;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;
import cn.liangce.domain.Customer;
import cn.liangce.utils.HibernateUtils;
//测试Criteria查询
public class Demo {
	@Test
	//基本查询
	public void fun1(){
		//1.获得session
		Session session=HibernateUtils.openSession();
		//2.控制事务
		Transaction ts = session.beginTransaction();
		//3.执行操作
		//查询所有Customer对象,创建查询对象
		Criteria criteria = session.createCriteria(Customer.class);
		List list = criteria.list();//List结果集
		System.out.println(list);
//		Object uniqueResult = criteria.uniqueResult();独一无二的结果集
		//4.提交事务,关闭资源
		ts.commit();
		session.close();
	}
	@Test
	//条件查询
		//HQL语句中,不可能出现任何数据库相关的信息的
		// > 				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(){
		//1.获得session
		Session session=HibernateUtils.openSession();
		//2.开启事务
		Transaction ts = session.beginTransaction();
		//3.执行操作
		//创建Criteria查询对象
		Criteria criteria = session.createCriteria(Customer.class);
		//添加查询参数
		criteria.add(Restrictions.eq("cust_id", 1l));
		//执行查询,获得结果
		Customer customer = (Customer) criteria.uniqueResult();
		System.out.println(customer);
		//4.提交事务,关闭资源
		ts.commit();
		session.close();
	}
	@Test
	//分页查询
	public void fun3(){
		//1.获得session
		Session session=HibernateUtils.openSession();
		//2.开启事务
		Transaction ts = session.beginTransaction();
		//3.执行操作
		//创建Criteria查询对象
		Criteria criteria = session.createCriteria(Customer.class);
		//添加查询参数,设置分页信息
		criteria.setFirstResult(1);//本页起始索引
		criteria.setMaxResults(3);//最大显示条数
		//执行查询,获得结果
		List list = criteria.list();
		System.out.println(list);
		//4.提交事务,关闭资源
		ts.commit();
		session.close();
	}
	@Test
	//查询总条数
	public void fun4(){
		//1.获得session
		Session session=HibernateUtils.openSession();
		//2.开启事务
		Transaction ts = session.beginTransaction();
		//3.执行操作
		//创建Criteria查询对象
		Criteria criteria = session.createCriteria(Customer.class);
		//添加查询参数,记录总条数
		criteria.setProjection(Projections.rowCount());
		//执行查询,获得结果
		Long uniqueResult = (Long) criteria.uniqueResult();//注意返回值是Long
		System.out.println(uniqueResult);
		//4.提交事务,关闭资源
		ts.commit();
		session.close();
	}
}

你可能感兴趣的:(hibernate)