Hibernate中Criteria的完整用法Word格式文档下载.docx
- 文档编号:15686230
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:14
- 大小:22.95KB
Hibernate中Criteria的完整用法Word格式文档下载.docx
《Hibernate中Criteria的完整用法Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Hibernate中Criteria的完整用法Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
Criteriacri=session.createCriteria(JdItemSerialnumber.class);
Criterioncron=Restrictions.like("
customer"
name);
cri.add(cron);
list=cri.list();
==============================
比较运算符
HQL运算符QBC运算符含义
=Restrictions.eq()等于
<
>
Restrictions.not(Exprission.eq())不等于
Restrictions.gt()大于
=Restrictions.ge()大于等于
Restrictions.lt()小于
=Restrictions.le()小于等于
isnullRestrictions.isnull()等于空值
isnotnullRestrictions.isNotNull()非空值
likeRestrictions.like()字符串模式匹配
andRestrictions.and()逻辑与
andRestrictions.conjunction()逻辑与
orRestrictions.or()逻辑或
orRestrictions.disjunction()逻辑或
notRestrictions.not()逻辑非
in(列表)Restrictions.in()等于列表中的某一个值
ontin(列表)Restrictions.not(Restrictions.in())不等于列表中任意一个值
betweenxandyRestrictions.between()闭区间xy中的任意值
notbetweenxandyRestrictions.not(Restrictions..between())小于值X或者大于值y
3:
HQL
Stringhql="
selects.name,avg(s.age)fromStudentsgroupbys.name"
;
Queryquery=session.createQuery(hql);
list=query.list();
....
4:
本地SQL查询
session=sessionFactory.openSession();
tran=session.beginTransaction();
SQLQuerysq=session.createSQLQuery(sql);
sq.addEntity(Student.class);
list=sq.list();
mit();
16.1.创建一个Criteria实例
org.hibernate.Criteria接口表示特定持久类的一个查询。
Session是Criteria实例的工厂。
Criteriacrit=sess.createCriteria(Cat.class);
crit.setMaxResults(50);
Listcats=crit.list();
16.2.限制结果集内容
一个单独的查询条件是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();
约束可以按逻辑分组。
.add(Restrictions.or(
Restrictions.eq("
age"
newInteger(0)),
Restrictions.isNull("
)
))
.add(Restrictions.in("
newString[]{"
Fritz"
Izi"
Pk"
}))
.add(Restrictions.disjunction()
.add(Restrictions.isNull("
.add(Restrictions.eq("
newInteger(0)))
newInteger
(1)))
newInteger
(2)))
Hibernate提供了相当多的内置criterion类型(Restrictions子类),但是尤其有用的是可以允许你直接使用SQL。
.add(Restrictions.sql("
lower({alias}.name)likelower(?
)"
Hibernate.STRING))
{alias}占位符应当被替换为被查询实体的列别名。
Property实例是获得一个条件的另外一种途径。
你可以通过调用Property.forName()创建一个Property。
Propertyage=Property.forName("
);
.add(age.isNull())
.add(age.eq(newInteger(0)))
.add(age.eq(newInteger
(1)))
.add(age.eq(newInteger
(2)))
.add(Property.forName("
).in(newString[]{"
16.3.结果集排序
你可以使用org.hibernate.criterion.Order来为查询结果排序。
F%"
.addOrder(Order.asc("
.addOrder(Order.desc("
.setMaxResults(50)
).like("
.addOrder(Property.forName("
).asc())
).desc())
16.4.关联
你可以使用createCriteria()非常容易的在互相关联的实体间建立约束。
.createCriteria("
kittens"
注意第二个createCriteria()返回一个新的Criteria实例,该实例引用kittens集合中的元素。
接下来,替换形态在某些情况下也是很有用的。
.createAlias("
kt"
mate"
mt"
.add(Restrictions.eqProperty("
kt.name"
mt.name"
(createAlias()并不创建一个新的Criteria实例。
Cat实例所保存的之前两次查询所返回的kittens集合是没有被条件预过滤的。
如果你希望只获得符合条件的kittens,你必须使用returnMaps()。
.returnMaps()
Iteratoriter=cats.iterator();
while(iter.hasNext()){
Mapmap=(Map)iter.next();
Catcat=(Cat)map.get(Criteria.ROOT_ALIAS);
Catkitten=(Cat)map.get("
}
16.5.动态关联抓取
你可以使用setFetchMode()在运行时定义动态关联抓取的语义。
.setFetchMode("
FetchMode.EAGER)
这个查询可以通过外连接抓取mate和kittens。
查看第20.1节“抓取策略(F
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hibernate Criteria 完整 用法
![提示](https://static.bdocx.com/images/bang_tan.gif)