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的检索方式: 5种
介绍了HIBERNATE的检索策略,可以此作为指引进行学习
Hibernate检索方式 孙卫琴的 pdf
java-Hibernate 检索
NULL 博文链接:https://364232252.iteye.com/blog/2368725
hibernate5--4.检索方式及策略
魔乐科技,李兴华老师的Hibernate教程笔记,对Hibernate的基础知识进行了比较详细的讲解,对初学者有一个比较笼统的介绍,是带我们入门Hibernate的不二选择。
Hibernate数据检索(HQL)笔记Hibernate数据检索(HQL)笔记Hibernate数据检索(HQL)笔记Hibernate数据检索(HQL)笔记
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
1、hibernate框架的检索方式有以下几种: OID检索:根据唯一标识OID检索数据 对象导航检索:根据某个对象导航查询与该对象关联的对象数据 HQL检索:通过query接口对象查询 QBC检索:通过criteria接口对象查询 ...
使用 hibernate-search 实现全文检索及文档管理的例子 1 全文检索 2 手动重新建立索引 3 文档上传(自动建立索引) 4 文档更新(自动建立索引) 5 文档删除
hibernate的延迟检索在轻量级J2EE框架中的应用
它提供了灵活多样的查询机制,包括导航对象图、通过标识符检索、使用 HQL 检索对象、使用 Hibernate 条件 API 和使用本地 SQL 查询等。 在 Hibernate 中检索对象的各种方法: 1. 导航对象图:通过对象的关联关系,...