Hibernate
检索方式(一)
Hql
查询方式:
以下代码通过查询条件显示数据:
List
list = session.createQuery(
"from
Person p where p.personName = :personName"
)
.setString(
"personName"
,
"scott"
).list();
Hql
的
like
查询
List
list = session.createQuery(
"from
Person p where p.personName like :personName "
)
.setString(
"personName"
,
"%a%"
).list();
查询指定范围值:
List
list = session.createQuery(
"from
Person p where p.id > :pid and p.id < :nid"
)
.setInteger(
"pid"
,
new
Integer(60))
.setInteger(
"nid"
,
new
Integer(70))
.list();
for
(
int
i=0;i<list.size();i++){
Person
person = (Person)list.get(i);
System.
out
.println(
"---
id ="
+person.getPersonid());
System.
out
.println(
"---
name="
+person.getPersonName());
}
在映射文件中定义命名查询语句
Person.hbm.xml
定义如下
:
<
query
name
=
"findPersonByname"
>
<![CDATA[
from Person p where p.personName like :name
]]>
</
query
>
程序代码如下
:
List
list = session.
getNamedQuery
(
"findPersonByname"
)
.setString(
"name"
,
"%a%"
).list();
Hql
翻页查询:
setFirstResult(int
firsResult):
设定从哪个对象开始检索,参数表示这个对象在查询结果中的索引位置
,
索引起始值为
0.
setmaxResult(int
maxResult):
设定一次最多检索出的对象数目
.
以下示例演示了翻页操作
:
List
list = session.createQuery(
"from
Person p"
).setFirstResult(5)
.setMaxResults(5).list();
HQL
投影查询
:
投影查询是指查询结果仅包括部分实体或者实体的部分属性
.
投影是通过
select
关键字来实现的
.
Hql
投影查询中使用
聚合函数:
Query
query = session
.createQuery(
"select
max(id) as max,min(id) as min ,sum(id) as sum ,personName from
Person group by personName order by personName desc"
);
List
list = query.list();
for
(
int
i = 0; i < list.size(); i++) {
Object[]
object = (Object[]) list.get(i);
Integer
maxid = (Integer) object[0];
Integer
minid = (Integer) object[1];
Integer
sumid = (Integer) object[2];
String
personName = (String)object[3];
}
也可以返回类实例
:
Query
query = session.createQuery(
"select
new com.test.pojo.MyPerson(p.personid,p.personName,p.email) from
Person p where p.personName like :personName"
)
.setString(
"personName"
,
"%a%"
);
List
list = query.list();
Iterator
ite = list.iterator();
while
(ite.hasNext()){
MyPerson
myperson = (MyPerson)ite.next();
}
QBC
(Query By Criteria)
查询:
由
Criteria
接口,
Criterion
接口和
Expression
类组成。它支持在运行时动态产生查询语句。
以下代码返回多条记录
:
List
list = session.createCriteria(Person.
class
)
.addOrder(
Order.
desc
(
"personName"
)).list();
QBC
显示分页
:
List
list = session.createCriteria(Person.
class
)
.addOrder(Order.
desc
(
"personName"
))
.setFirstResult(5)
.setMaxResults(5).list();
QBC
检索单个对象
:
Person
person = (
Person
)
session.createCriteria(
Person
.
class
)
.setMaxResults(1).uniqueResult();
设定查询条件
:
List
list =
session
.createCriteria(Person.
class
)
.add(Restrictions.
eq
(
"personName"
,
"jack"
)).list();
以下语句查询不等于
“
jack”
的记录
List
list = session.createCriteria(Person.
class
)
.
add
(Restrictions
.
not
(Restrictions.
eq
(
"personName"
,
"jack"
)))
.list();
以下语句查询指定范围值的记录
:
(gt()
大于
,
ge()
大于等于
,
lt()
小于
,
le()
小于等于
)
(
查询
personid
大于
67
且小于
72
的记录
)
List
list = session.createCriteria(Person.
class
)
.add(Restrictions.
gt
(
"personid"
,
new
Integer(67)))
.add(Restrictions.
le
(
"personid"
,
new
Integer(72)))
.list();
以下语句查询
Person
表中为空的那些记录
:
List
list = session.createCriteria(Person.
class
)
.add(Restrictions.
isNotNull
(
"tel"
)).list();
以下代码返回
in( )
列表中相匹配的那些记录
String[]
personName = {
"scott"
,
"mike"
};
List
list = session.createCriteria(Person.
class
)
.add(Restrictions.
in
(
"personName"
,
personName))
.list();
以下代码返回不等于
in( )
列表中的那些记录
String[]
personName = {
"scott"
,
"mike"
};
List
list = session.createCriteria(Person.
class
)
.add(Restrictions.
not
(
Restrictions.
in
(
"personName"
,
personName)))
.list();
以下代码演示了
between
用法
List
list
= session.createCriteria(Person.
class
)
.add(Restrictions.
between
(
"personid"
,
new
Integer(47),
new
Integer(65)))
.list();
以下代码演示了字符串模糊查询
:
List
list = session.createCriteria(Person.
class
)
.add(Restrictions.
like
(
"personName"
,
"a"
,
MatchMode.
ANYWHERE
)).
list
();
以下代码演示了逻辑与
的用法
.(
返回
person
表中
pesonName
为
“
jack”
并且
personid
大于
71
的记录
)
List
list = session.createCriteria(Person.
class
)
.add(
Restrictions.
and
(
Restrictions.
eq
(
"personName"
,
"jack"
),
Restrictions.
ge
(
"personid"
,
new
Integer(71))))
.list();
分享到:
相关推荐
一、Hibernate检索方式 1. **HQL(Hibernate Query Language)**: HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但它是基于类和对象的。你可以通过HQL来查询、更新和删除对象,而无需关心底层的SQL语法。...
本教程将深入探讨"day36-hibernate检索和优化 02-Hibernate检索方式:简单查询及别名查询"的主题,通过源码分析和实际工具的应用,来提升数据库查询的效率。 首先,我们了解Hibernate的检索方式。在Hibernate中,...
标题中的“day36 04-Hibernate检索方式:多表连接查询”表明这是一个关于Hibernate框架的教程,重点讲解如何在Hibernate中进行多表连接查询。在这个主题中,我们将深入探讨Hibernate的ORM(对象关系映射)机制以及...
标题:“HIBERNATE检索策略” 描述:本文深入解析了HIBERNATE的检索策略,为读者提供了一条清晰的学习路径,重点分析了HIBERNATE中的抓取策略及其应用场景,帮助开发者更有效地管理和优化数据加载过程。 在...
### Hibernate的五种检索方式详解 #### 一、导航对象图检索方式 导航对象图检索是一种常见的对象关联查询方式。这种方式通常用于加载已经存在于内存中的对象,并通过这些对象访问与其关联的对象。例如,在一个订单...
### Hibernate检索方式详解 #### 一、概述 Hibernate是一个强大的对象关系映射(ORM)框架,它可以将Java对象与数据库表进行映射,使得开发者能够更方便地进行数据的持久化操作。在Hibernate中,提供了多种检索...
Hibernate 是一个流行的 Java 持久层框架,它提供了多种检索数据的方式,包括导航对象图检索、OID 检索、HQL 检索、QBC 检索和本地 SQL 检索等。下面将详细介绍每种检索方式。 一、导航对象图检索 导航对象图检索...
### Hibernate数据检索(HQL)知识点详解 #### 一、简介 Hibernate 是一款开源的对象关系映射(ORM)框架,它允许开发人员将 Java 对象映射到数据库表中的记录,从而极大地简化了数据访问层的开发工作。本文档基于...
3. **Hibernate Search**:作为Hibernate的一个扩展,Hibernate Search提供了基于Lucene的全文检索功能,使得在数据库中的数据可以被快速、精确地搜索。 **二、集成Hibernate Search** 1. **配置依赖**:首先,你...
### Hibernate的检索策略详解 #### 一、概述 在Java持久化框架Hibernate中,检索策略是一种重要的机制,它主要用于控制对象何时以及如何加载到应用程序内存中。合理的检索策略不仅可以提高应用性能,还能简化代码...
一、Hibernate检索方式概述 Hibernate提供了多种检索数据的方法,以适应不同的需求场景。这些方法包括:HQL(Hibernate Query Language)、QBC(Query By Criteria)、Criteria API以及直接使用Session的get()和load...
Hibernate提供了多种方式来查询数据,包括HQL、QBC和本地SQL。 - **HQL (Hibernate Query Language)**:一种面向对象的查询语言,类似于SQL但更加面向对象。 - **QBC (Query By Criteria)**:基于标准的API提供了一...
本人在厦门邦初培训时候 使用的快速入门精简文档 Session缓存的作用 Session清理缓存的时间点 对象的临时状态、持久状态和游离状态 用session的update()方法使游离对象转变为持久化对象。...本地SQL检索方式
通过这种方式,只有当确实需要访问集合中的数据时,Hibernate才会执行数据库查询,从而节省了资源。 #### 3. 延迟加载在轻量级J2EE框架中的应用 在轻量级J2EE框架中,如Spring+Hibernate,延迟加载机制的应用非常...
**使用Hibernate Search实现全文检索及文档管理** 在Java开发中,全文检索和文档管理是常见的需求,特别是对于大型的企业级应用。Hibernate Search是Hibernate ORM框架的一个扩展,它提供了对数据库中的对象进行...
【Hibernate检索策略】 Hibernate提供三种主要的检索策略:立即检索、延迟检索和迫切左外连接检索。 1. **立即检索**:这种策略将立即加载关联的对象,无论对象是持久化状态还是游离状态。优点是应用程序可以方便...