Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx

上传人:b****2 文档编号:4571938 上传时间:2023-05-03 格式:DOCX 页数:24 大小:24.30KB
下载 相关 举报
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第1页
第1页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第2页
第2页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第3页
第3页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第4页
第4页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第5页
第5页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第6页
第6页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第7页
第7页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第8页
第8页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第9页
第9页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第10页
第10页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第11页
第11页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第12页
第12页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第13页
第13页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第14页
第14页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第15页
第15页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第16页
第16页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第17页
第17页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第18页
第18页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第19页
第19页 / 共24页
Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx

《Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx》由会员分享,可在线阅读,更多相关《Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx(24页珍藏版)》请在冰点文库上搜索。

Criteria 和 DetachedCriteria 的区别和应用Word文件下载.docx

//对String类型的属性,无论在那里值在那里都匹配。

相当于%value% 

Project主要是让Criteria能够进行报表查询,并可以实现分组。

Project主要有SimpleProjection、ProjectionList和Property三个实现。

其中SimpleProjection和ProjectionList的实例化是由内建的Projections来完成,如提供的avg、count、max、min、sum可以让开发者很容易对某个字段进行统计查询。

Property是对某个字段进行查询条件的设置,如通过Porperty.forName(“color”).in(newString[]{“black”,”red”,”write”});

则可以创建一个Project实例。

通过criteria的add(Project)方法加入到查询条件中去。

使用Criteria进行查询,主要要清晰的是Hibernate提供了那些类和方法来满足开发中查询条件的创建和组装,下面介绍几种用法:

创建一个Criteria实例

org.hibernate.Criteria接口表示特定持久类的一个查询。

Session是Criteria实例的工厂。

Criteriacrit=sess.createCriteria(Cat.class);

crit.setMaxResults(50);

Listcats=crit.list();

crit.setMaxResults(50);

Java代码

Criteria 

crit 

sess.createCriteria(Cat.class);

crit.setMaxResults(50);

List 

cats 

crit.list();

Criteriacrit=sess.createCriteria(Cat.class);

crit.setMaxResults(50);

Listcats=crit.list();

限制结果集内容

一个单独的查询条件是org.hibernate.criterion.Criterion接口的一个实例。

org.hibernate.criterion.Restrictions类定义了获得某些内置Criterion类型的工厂方法。

Listcats=sess.createCriteria(Cat.class) 

.add(Restrictions.like("

name"

"

Fritz%"

)) 

.add(Restrictions.between("

weight"

minWeight,maxWeight)) 

.list();

Listcats=sess.createCriteria(Cat.class) 

.add(Restrictions.like("

)) 

.add(Restrictions.between("

minWeight,maxWeight)) 

sess.createCriteria(Cat.class) 

.add( 

Restrictions.like("

 

"

) 

Restrictions.between("

minWeight, 

maxWeight) 

.list();

Listcats=sess.createCriteria(Cat.class).add(Restrictions.like("

"

)).add(Restrictions.between("

minWeight,maxWeight)).list();

约束可以按逻辑分组。

.add(Restrictions.or( 

Restrictions.eq("

age"

newInteger(0)), 

Restrictions.isNull("

) 

.add(Restrictions.or( 

newInteger(0)), 

Restrictions.isNull("

) 

1. 

2. 

1.Listcats=sess.createCriteria(Cat.class) 

.add(Restrictions.in("

newString[]{"

Fritz"

Izi"

Pk"

})) 

3. 

.add(Restrictions.disjunction() 

4. 

.add(Restrictions.isNull("

5. 

.add(Restrictions.eq("

newInteger(0))) 

6. 

newInteger

(1))) 

7. 

newInteger

(2))) 

8. 

9. 

1.Listcats=sess.createCriteria(Cat.class) 

})) 

.add(Restrictions.disjunction() 

.add(Restrictions.isNull("

.add(Restrictions.eq("

newInteger(0))) 

newInteger

(1))) 

newInteger

(2))) 

1.List 

Restrictions.in( 

new 

String[] 

Restrictions.disjunction() 

Restrictions.isNull("

Restrictions.eq("

Integer(0) 

Integer

(1) 

Integer

(2) 

Listcats=sess.createCriteria(Cat.class).add(Restrictions.in("

newString[]{"

})).add(Restrictions.disjunction().add(Restrictions.isNull("

)).add(Restrictions.eq("

newInteger(0))).add(Restrictions.eq("

newInteger

(1))).add(Restrictions.eq("

newInteger

(2))))).list();

Hibernate提供了相当多的内置criterion类型(Restrictions子类),但是尤其有用的是可以允许你直接使用SQL。

.add(Restrictions.sql("

lower({alias}.name)likelower(?

)"

 

3.Hibernate.STRING)) 

.add(Restrictions.sql("

 

3.Hibernate.STRING)) 

Restrictions.sql("

lower({alias}.name) 

like 

lower(?

Hibernate.STRING) 

Listcats=sess.createCriteria(Cat.class).add(Restrictions.sql("

Hibernate.STRING)).list();

{alias}占位符应当被替换为被查询实体的列别名。

Property实例是获得一个条件的另外一种途径。

你可以通过调用Property.forName()创建一个Property。

1.Propertyage=Property.forName("

);

2.stcats=sess.createCriteria(Cat.class) 

.add(age.isNull()) 

.add(age.eq(newInteger(0))) 

.add(age.eq(newInteger

(1))) 

.add(age.eq(newInteger

(2))) 

.add(Property.forName("

).in(newString[]{"

10. 

2.stcats=sess.createCriteria(Cat.class) 

.add(age.isNull()) 

.add(age.eq(newInteger(0))) 

.add(age.eq(newInteger

(1))) 

.add(age.eq(newInteger

(2))) 

.add(Property.forName("

1.Property 

age 

Property.forName("

);

age.isNull() 

age.eq( 

).in( 

Propertyage=Property.forName("

Listcats=sess.createCriteria(Cat.class).add(Restrictions.disjunction().add(age.isNull()).add(age.eq(newInteger(0))).add(age.eq(newInteger

(1))).add(age.eq(newInteger

(2))))).add(Property.forName("

).in(newString[]{"

})).list();

3.结果集排序

你可以使用org.hibernate.criterion.Order来为查询结果排序。

F%"

.addOrder(Order.asc("

.addOrder(Order.desc("

.setMaxResults(50) 

.addOrder(Order.asc("

.addOrder(Order.desc("

.setMaxResults(50) 

.addOrder( 

Order.asc("

Order.desc("

.setMaxResults(50) 

).addOrder(Order.asc("

)).addOrder(Order.desc("

)).setMaxResults(50).list();

).like("

.addOrder(Property.forName("

).asc()) 

).desc()) 

.addOrder(Property.forName("

).asc()) 

).desc()) 

).like("

).asc() 

).desc() 

Listcats=sess.createCriteria(Cat.class).add(Property.forName("

)).addOrder(Property.forName("

).asc()).addOrder(Property.forName("

).desc()).setMaxResults(50).list();

4.关联

你可以使用createCriteria()非常容易的在互相关联的实体间建立约束。

.add(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2