Hibernate的Criteria查询

1.查询步骤

使用Criteria查询的基本步骤如下:

(1)获取Hibernate session对象
(2)调用Sessionr createCriteria()方法创建Criteria对象,参数是菶持久化类。
(3)如果需要查询条件,则调用Criteria对象的add()方法增加查询条件,否则直接执行下一步操作。add()方法的参数是Criterion对象,即Criteria查询的查询条件由Criterion接口生成,Criteria对象表示的查询条件则由Restrictions类负责产生。
(4)调用Criteria对象的list方法执行查询,得到查询结果。

//示例
	Session session=HibernateSessionFactory.getSession();
	Criteria criteria =session.createCriteria(School.class);  //criteria对象的创建
	/*	加入查询条件
	*	Criterion criterion =Restrictions.like("schoolAddress", "%广%");
	*/	criteria.add(criterion);
	List list=criteria.list();
	System.out.println("学校名称                                      学校地址");
	System.out.println("--------------------------------");
	for(int i=0;i<list.size();i++){
		School school1=(School) list.get(i);
		System.out.println(school1.getSchoolName()+"  "+school1.getSchoolAddress());
	}
	
	//将查询结果分页显示
	criteria.setFirstResult(0);
	criteria.setMaxResult(2);
	
	//对查询结果进行排序
	criteria.addOrder(Order.desc("studentName"));
	
	//使用统计函数
	criteria.setProjection(Projections.avg("grade"));



2.Criteria查询介绍:org.hibernate.Criteria接口

该接口的部分方法介绍如下:

返回值类型          方法                            	 	功能说明
	 Criteria 	add(Criterion criterion)				添加查询条件,参数为Criterion对象 
	 Criteria 	addOrder(Order order)					添加排序条件,参数为Order对象
	 List 		list() 									进行查询,得到查询结果。
	 Criteria   setMaxResults(int maxResults)			一次查询显示的最大记录数
	 Criteria   setFirstResult(int firstResult) 		从哪条记录开始显示
	 Criteria   setProjection(Projection projection)    使用统计函数




3.Criteria查询介绍:org.hibernate.criterion.Criterion接口
该接口主要是生成查询条件,该类方法并不多(仅有两个),但其作为Restrictions方法的返回类型,用以接收查询条件。


4.Criteria查询介绍:org.hibernate.criterion.Restrictions类

用来生成查询条件的工具类,生成的查询条件的方法都是静态方法,部分方法如下:

返回值类型        					  方法                            	 			HQL运算符
	static LogicalExpression 	and(Criterion lhs, Criterion rhs)          					and
	static Criterion			between(String propertyName, Object lo, Object hi)   		between      
	static SimpleExpression 	eq(String propertyName, Object value) 						=
	static SimpleExpression 	ge(String propertyName, Object value)						>=
	static SimpleExpression 	gt(String propertyName, Object value)						>
	static Criterion			in(String propertyName, Collection values)					in
	static Criterion			in(String propertyName, Object[] values)					in
	static Criterion 			isEmpty(String propertyName) 								
	static Criterion 			isNotEmpty(String propertyName)
	static Criterion 			isNotNull(String propertyName)								is not null
	static Criterion 			isNull(String propertyName)									is null
	static SimpleExpression		le(String propertyName, Object value)						<=
	static SimpleExpression 	like(String propertyName, Object value) 					like
	static SimpleExpression 	lt(String propertyName, Object value) 						<
	static SimpleExpression 	ne(String propertyName, Object value) 						<>
	static Criterion 			not(Criterion expression) 									not
	static LogicalExpression 	or(Criterion lhs, Criterion rhs)							or




注:SimpleExpression与LogicalExpression均实现了Criterion接口,故以上方法均可用Criterion接收返回值。

5.Criteria查询介绍:org.hibernate.criterion.Order类

Order类主要用来实现数据的字段的排序:

返回值类型          方法                            	 功能说明
	static Order	 asc(String propertyName) 				 升序排列
	static Order 	 desc(String propertyName) 				 降序排列




6.Criteria查询介绍:org.hibernate.criterion.Projections类

此类中定义了多个静态方法,用于调用聚集函数、分组和统计方法。

			返回值类型          				方法                            	功能说明
	static AggregateProjection 		avg(String propertyName) 						求平均数
	static CountProjection 			count(String propertyName) 						统计数量
	static PropertyProjection 		groupProperty(String propertyName) 				按字段分组
	static AggregateProjection 		max(String propertyName) 						求最大值
	static AggregateProjection 		min(String propertyName) 						求最小值
	static Projection 				rowCount()  									统计行数
	static AggregateProjection 		sum(String propertyName) 						求和
        


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值