hibernate系列十七:Criteria查询

         Criteria查询是Hibernate提供的另一种查询方式,与HQL基于字符串的查询形式完全不同。Hibernate提供了org.Hibernate.Criteria接口、org.hibernate.criterion.Criterion接口和org.hibernate.criterion .Restrictions类等Criteria API,用于支持在运行时动态生成查询语句。

1.  条件查询

使用Criteria查询包括以下步骤:

    (1)使用Session接口的createCriteria()方法创建Criteria对象。

    (2)使用Restrictions类提供的静态方法设置查询条件,这些静态方法返回Criterion对象,一个Criterion对象代表一个查询条件。Criteria接口的add()方法用来添加查询条件。

    (3)使用Criteria接口的list()方法执行查询语句,list()方法返回java.util.List类型的结果,List集合中的每个元素都是持久化对象。

    接下来通过示例来说明。

案例1  查询男学生

package com.obtk.test;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

import com.obtk.entitys.StudentEntity;
import com.obtk.utils.HiberUtil;

public class CriteraTest1 {
	public static void main(String[] args) {
		Session session=null;
		try {
			session=HiberUtil.getSession();
			Criteria cri=session.createCriteria(StudentEntity.class);
			cri=cri.add(Restrictions.eq("gender", "男"));
			List<StudentEntity> stuList=cri.list();
			for(StudentEntity stu : stuList){
				System.out.println(stu.getStuId()+"\t"+stu.getStuName()+"\t"+stu.getGender());
			}
		} catch (HibernateException e) {
			e.printStackTrace();
		}finally{
			HiberUtil.closeSession();
		}
	}
}

案例2  多条件查询,链式编程

package com.obtk.test;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

import com.obtk.entitys.StudentEntity;
import com.obtk.utils.HiberUtil;

public class CriteraTest2 {
	public static void main(String[] args) {
		Session session=null;
		try {
			session=HiberUtil.getSession();
			//添加条件,链式编程
			Criteria cri=session.createCriteria(StudentEntity.class)
						.add(Restrictions.eq("gender", "男"))
						.add(Restrictions.ge("age", 20))
						.add(Restrictions.le("age", 26))
						.add(Restrictions.isNotNull("dept"));
			List<StudentEntity> stuList=cri.list();
			for(StudentEntity stu : stuList){
				System.out.println(stu.getStuId()+"\t"+stu.getStuName()+"\t"+stu.getGender());
			}
		} catch (HibernateException e) {
			e.printStackTrace();
		}finally{
			HiberUtil.closeSession();
		}
	}
}


案例3   范围查询

package com.obtk.test;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

import com.obtk.entitys.StudentEntity;
import com.obtk.utils.HiberUtil;

public class CriteraTest3 {
	public static void main(String[] args) {
		Session session=null;
		try {
			session=HiberUtil.getSession();
			//范围查询
			//String[] theValues={"男","妖"};
			//添加条件,链式编程
			Criteria cri=session.createCriteria(StudentEntity.class)
						//.add(Restrictions.in("gender", theValues));
						.add(Restrictions.between("
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御前两把刀刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值