Hibernate使用criteria的实例

package com.kd.test;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;

import com.kd.entity.User;

public class CriteriaDemo {
	@Test
	public void fun1() {
		// 获取配置文件对象
		Configuration config = new Configuration().configure();
		// 构建SessionFactory
		SessionFactory factory = config.buildSessionFactory();
		// 生产session,可以理解为jdbc中的connection
		Session session = factory.openSession();
		// 开启事务
		Transaction transaction = session.beginTransaction();
		// criteria 无语句查询,不需要写任何sql,纯方法调用即可
		// criteria 查询列表
		Criteria criteria = session.createCriteria(User.class);
		List list = criteria.list();
		transaction.commit();
		session.close();
		System.out.println(list);
	}
	
	@Test
	public void fun2() {
		// 获取配置文件对象
		Configuration config = new Configuration().configure();
		// 构建SessionFactory
		SessionFactory factory = config.buildSessionFactory();
		// 生产session,可以理解为jdbc中的connection
		Session session = factory.openSession();
		// 开启事务
		Transaction transaction = session.beginTransaction();
		// criteria 无语句查询,不需要写任何sql,纯方法调用即可
		// criteria 分页查询
		Criteria criteria = session.createCriteria(User.class);
		//从哪开始pageindex
		criteria.setFirstResult(0);
		//查询几条pagesize
		criteria.setMaxResults(2);
		List list = criteria.list();
		transaction.commit();
		session.close();
		System.out.println(list);
	}
	
	@Test
	public void fun3() {
		// 获取配置文件对象
		Configuration config = new Configuration().configure();
		// 构建SessionFactory
		SessionFactory factory = config.buildSessionFactory();
		// 生产session,可以理解为jdbc中的connection
		Session session = factory.openSession();
		// 开启事务
		Transaction transaction = session.beginTransaction();
		// criteria 无语句查询,不需要写任何sql,纯方法调用即可
		// criteria 条件查询
		Criteria criteria = session.createCriteria(User.class);
		//1.设置条件参数求指定id的user信息
		/*
		 * Restrictions中包含了许多条件参数
		 * >     gt		|	 between  	between
		 * >=	 ge		|	 and	    and
		 * <	 lt		|	 or			or
		 * <=	 le		|	 like	    like
		 * ==	 eq		|	 .....
		 * !=	 ne		|
		 */
//		criteria.add(Restrictions.eq("id", 1));
//		User user = (User) criteria.uniqueResult();
		//2.设置聚合函数Projections.rowCount()求数据个数
		/*
		 * avg(String propertyName):计算属性字段的平均值
		 * count(String propertyName):统计一个属性在结果中出现的次数
		 * countDistinct(String propertyName):统计属性包含的不重复值的数量
		 * max(String propertyName):计算属性值的最大值
		 * min(String propertyName):计算属性值的最小值
		 * sum(String propertyName):计算属性值的总和
		 */
		criteria.setProjection(Projections.rowCount());
		Object num = criteria.uniqueResult();
		transaction.commit();
		session.close();
//		System.out.println(user);
		System.out.println(num);
	}
	
	
}

猜你喜欢

转载自blog.csdn.net/Yang_xinqiao/article/details/84228258