javaEE Hibernate, Criteria无语句查询(QBC), createCriteria()

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();
		
	}
}

猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/81055333
今日推荐