`

Hibernate 检索方式1

阅读更多

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();

 

分享到:
评论

相关推荐

    hibernate5--4.检索方式及策略

    一、Hibernate检索方式 1. **HQL(Hibernate Query Language)**: HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但它是基于类和对象的。你可以通过HQL来查询、更新和删除对象,而无需关心底层的SQL语法。...

    day36-hibernate检索和优化 02-Hibernate检索方式:简单查询及别名查询

    本教程将深入探讨"day36-hibernate检索和优化 02-Hibernate检索方式:简单查询及别名查询"的主题,通过源码分析和实际工具的应用,来提升数据库查询的效率。 首先,我们了解Hibernate的检索方式。在Hibernate中,...

    day36 04-Hibernate检索方式:多表连接查询

    标题中的“day36 04-Hibernate检索方式:多表连接查询”表明这是一个关于Hibernate框架的教程,重点讲解如何在Hibernate中进行多表连接查询。在这个主题中,我们将深入探讨Hibernate的ORM(对象关系映射)机制以及...

    HIBERNATE检索策略

    标题:“HIBERNATE检索策略” 描述:本文深入解析了HIBERNATE的检索策略,为读者提供了一条清晰的学习路径,重点分析了HIBERNATE中的抓取策略及其应用场景,帮助开发者更有效地管理和优化数据加载过程。 在...

    Hibernate的检索方式

    ### Hibernate的五种检索方式详解 #### 一、导航对象图检索方式 导航对象图检索是一种常见的对象关联查询方式。这种方式通常用于加载已经存在于内存中的对象,并通过这些对象访问与其关联的对象。例如,在一个订单...

    Hibernate检索方式

    ### Hibernate检索方式详解 #### 一、概述 Hibernate是一个强大的对象关系映射(ORM)框架,它可以将Java对象与数据库表进行映射,使得开发者能够更方便地进行数据的持久化操作。在Hibernate中,提供了多种检索...

    java-Hibernate 检索

    Hibernate 是一个流行的 Java 持久层框架,它提供了多种检索数据的方式,包括导航对象图检索、OID 检索、HQL 检索、QBC 检索和本地 SQL 检索等。下面将详细介绍每种检索方式。 一、导航对象图检索 导航对象图检索...

    Hibernate数据检索(HQL)笔记

    ### Hibernate数据检索(HQL)知识点详解 #### 一、简介 Hibernate 是一款开源的对象关系映射(ORM)框架,它允许开发人员将 Java 对象映射到数据库表中的记录,从而极大地简化了数据访问层的开发工作。本文档基于...

    基于Spring的Hibernate Search全文检索功能示例

    3. **Hibernate Search**:作为Hibernate的一个扩展,Hibernate Search提供了基于Lucene的全文检索功能,使得在数据库中的数据可以被快速、精确地搜索。 **二、集成Hibernate Search** 1. **配置依赖**:首先,你...

    Hibernate的检索策略

    ### Hibernate的检索策略详解 #### 一、概述 在Java持久化框架Hibernate中,检索策略是一种重要的机制,它主要用于控制对象何时以及如何加载到应用程序内存中。合理的检索策略不仅可以提高应用性能,还能简化代码...

    浪磬J2EE第一期 Hibernate专题 第六讲 检索方式

    一、Hibernate检索方式概述 Hibernate提供了多种检索数据的方法,以适应不同的需求场景。这些方法包括:HQL(Hibernate Query Language)、QBC(Query By Criteria)、Criteria API以及直接使用Session的get()和load...

    hibernate基础 注解开发 检索

    Hibernate提供了多种方式来查询数据,包括HQL、QBC和本地SQL。 - **HQL (Hibernate Query Language)**:一种面向对象的查询语言,类似于SQL但更加面向对象。 - **QBC (Query By Criteria)**:基于标准的API提供了一...

    Hibernate 对象的状态检索

    本人在厦门邦初培训时候 使用的快速入门精简文档 Session缓存的作用 Session清理缓存的时间点 对象的临时状态、持久状态和游离状态 用session的update()方法使游离对象转变为持久化对象。...本地SQL检索方式

    hibernate的延迟检索在轻量级J2EE框架中的应用

    通过这种方式,只有当确实需要访问集合中的数据时,Hibernate才会执行数据库查询,从而节省了资源。 #### 3. 延迟加载在轻量级J2EE框架中的应用 在轻量级J2EE框架中,如Spring+Hibernate,延迟加载机制的应用非常...

    使用 hibernate-search 实现全文检索及文档管理的例子

    **使用Hibernate Search实现全文检索及文档管理** 在Java开发中,全文检索和文档管理是常见的需求,特别是对于大型的企业级应用。Hibernate Search是Hibernate ORM框架的一个扩展,它提供了对数据库中的对象进行...

    hibernate的检索

    【Hibernate检索策略】 Hibernate提供三种主要的检索策略:立即检索、延迟检索和迫切左外连接检索。 1. **立即检索**:这种策略将立即加载关联的对象,无论对象是持久化状态还是游离状态。优点是应用程序可以方便...

Global site tag (gtag.js) - Google Analytics