<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
紧接Hibernate 检索方式(一)
以下代码演示了
QBC
迫切左外连接
.
FetchMode.DEFAULT
,
表示采用映射文件中配置得检索策略
.
FetchMode.
JOIN
覆盖映射文件中配置的检索策略
,
在程序中显示指定
迫切左外连接检索策略
.
FetchMode.LAZY
:
覆盖映射文件中配置的检索策略
,
中程序中
显示指定 延迟检索策略
List
list = session.createCriteria(Person.
class
)
.setFetchMode(
"adds"
,FetchMode.
JOIN
)
.add(Restrictions.
eq
(
"personName"
,
"jack"
))
.list();
以下代码演示了
QBC
内联接
List
list = session.createCriteria(Adds.class)
.createAlias("person",
"p")
.add(Restrictions.like("p.personName",
"a", MatchMode.ANYWHERE))
.add(Restrictions.like("this.addName",
"an", MatchMode.ANYWHERE))
.list();
投影查询是指查询结果仅包括部分实体或者实体的部分属性
.
投影是通过
select
关键字来实现的
.
以下代码通过投影查询返回记录数量
:
List
list = session.createCriteria(Person.
class
)
.setProjection(Projections.
rowCount
())
.add(
Restrictions.
like
(
"personName"
,
"a"
,
MatchMode.
ANYWHERE
))
.list();
for
(
int
i=0;i<list.size();i++){
Integer
count
= (Integer)list.get(i);
System.
out
.println(
"---
count ="
+count);
}
以下代码通过
QBC
投影查询返回指定的列
:
Criteria
criteria = session.createCriteria(Person.
class
);
criteria.setProjection(Projections.
projectionList
().add(
Projections.
property
(
"personName"
)).add(
Projections.
property
(
"email"
)));
List
list = criteria.list();
Iterator
ite = list.iterator();
while
(ite.hasNext()) {
Object[] object = (Object[])ite.next();
String personName = (String)object[0];
String email = (String)object[1];
}
在投影查询中使用
聚合函数
:
Criteria
criteria = session.createCriteria(Person.
class
);
criteria.setProjection(
Projections.
projectionList
()
.add(Projections.
max
(
"personid"
))
.add(Projections.
min
(
"personid"
))
.add(Projections.
sum
(
"personid"
))
.add(Projections.
property
(
"personName"
))
.add(Projections.
avg
(
"personid"
))
.add(Projections.
count
(
"personid"
))
.add(Projections.
groupProperty
(
"personName"
)))
.addOrder(Order.
asc
(
"personName"
));
List
list = criteria.list();
for
(
int
i = 0;i<list.size();i++){
Object[]
object = (Object[])list.get(i);
Integer
maxValue = (Integer)object[0];
Integer
minValue = (Integer)object[1];
Integer
sumValue= (Integer)object[2];
String
personname = (String)object[3];
Double
avgValue = (Double)object[4];
Integer
countValue
= (Integer)object[5];
}
以下代码演示了两个表关联后作投影查询
:
List
list = session.createCriteria(Person.class)
.createAlias("adds","a")
.add(Restrictions.like
("personName",
"a", MatchMode.ANYWHERE))
.add(Restrictions.like
("a.addName", "an", MatchMode.ANYWHERE))
.setProjection(Projections.projectionList()
.add(Projections.property("personid"))
.add(Projections.property("personName"))
.add(Projections.property("a.addsid"))
.add(Projections.property("a.addName")))
.list();
分享到:
相关推荐
Hibernate的检索方式: 5种
介绍了HIBERNATE的检索策略,可以此作为指引进行学习
Hibernate检索方式 孙卫琴的 pdf
java-Hibernate 检索
NULL 博文链接:https://364232252.iteye.com/blog/2368725
hibernate5--4.检索方式及策略
Hibernate数据检索(HQL)笔记Hibernate数据检索(HQL)笔记Hibernate数据检索(HQL)笔记Hibernate数据检索(HQL)笔记
魔乐科技,李兴华老师的Hibernate教程笔记,对Hibernate的基础知识进行了比较详细的讲解,对初学者有一个比较笼统的介绍,是带我们入门Hibernate的不二选择。
NULL 博文链接:https://364232252.iteye.com/blog/2368583
基于Spring的Hibernate Search全文检索功能示例 实例下载
Hibernate的检索策略包括类级别检索策略和关联级别检索策略。
hibernate的注解开发 注解开发关联映射 HQL、QBC、本地SQL检索数据
本人在厦门邦初培训时候 使用的快速入门精简文档 Session缓存的作用 Session清理缓存的时间点 对象的临时状态、持久状态和游离状态 用session的update()方法使游离对象转变为持久化对象。...本地SQL检索方式
使用hibernate search实现全文检索和文档管理功能: 1 全文检索 2 手动生成索引 3 文档上传(自动建立索引) 4 文档更新(自动建立索引) 5 文档删除 使用说明: 1 需要先恢复数据库 searchDB_2008sqlserver.bak 2 ...
Hibernate数据检索(HQL).rar
总结hibernate框架的常用检索... 2、HQL检索方式: 查询全部数据:session.createQuery(“from 类名”); 根据条件查询:session.createQuery(“from 类名 where 属性名=?”).setParameter(?号索引(从0开始),条件);
struts2 hibernate spring compass全文检索,采用的是ssh2+compass来实现,本项目没有采用lunce,compass and lunce之间的哪个好用比一下就知道
使用 hibernate-search 实现全文检索及文档管理的例子 1 全文检索 2 手动重新建立索引 3 文档上传(自动建立索引) 4 文档更新(自动建立索引) 5 文档删除
第17章 Hibernate的检索方式(上) 17.1 Hibernate的检索方式简介 17.1.1 HQL检索方式 17.1.2 QBC检索方式 17.1.3 本地SQL检索方式 17.1.4 关于本章范例程序 17.1.5 使用别名 17.1.6 多态查询 ...