`

Hibernate查询方式

阅读更多

 

一、Hibernate的三种查询方式

1.HQL(HibernateQueryLanuage)语句,这是类似SQL语句的一种对象化查询语句.

2.使用Criteria对象,进行按条件查询(QuerybyCriteria,简称QBC)和按示例查询(QuerybyExample简称QBE).

3.生成原生的sql(NativeSQL)语句.

二、Criteria的基本使用

Java代码

1.Transactiontx=session.beginTransaction();

2.Criteriacriteria=session.createCriteria(Testbook.class);

3.List<Testbook>list=criteria.list();

4.tx.commit();

 

查询Testbook中所有的数据,然后返回

三、Criteria接口的核心方法

 

add()增加一个代表查询条件的Criterion对象
addOrder()增加一个代表排序的Criterion对象
createAlias()创建关联查询,为所关联的持久化类建立别名
createCriteria()在相互关联的持久化类之间建立条件约束
setFirstResult()设定要获取的第一条记录的位置
setMaxResults()设定要获取的记录的最大数量
list()获取满足查询条件的记录的集合
uniqueResult()获取满足查询条件的唯一记录

 

四、对查询结果进行排序

Java代码

1.Transactiontx=session.beginTransaction();

2.Criteriacriteria=session.createCriteria(Testbook.class).add(

3.Restrictions.like("name","任%")).add(Restrictions.between("id",1000,1010));

4.criteria.addOrder(Order.desc("id")).addOrder(Order.asc("createdTime"));

5.List<Testbook>list=criteria.list();

6.tx.commit();

 

五、实现分页显示数据

Java代码

1.<spanstyle="font-size:x-small;">Transactiontx=session.beginTransaction();

2.Criteriacriteria=session.createCriteria(Testbook.class).add(

3.Restrictions.like("name","任%"));

4.criteria.addOrder(Order.desc("id"));

5.criteria.setMaxResults(30);

6.criteria.setFirstResult(10);//setFirstResult()从0开始计数

7.List<Testbook>list=criteria.list();

8.tx.commit();</span>

 

 

六、只查询一条记录

Java代码

1.Transactiontx=session.beginTransaction();

2.Criteriacriteria=session.createCriteria(Testbook.class).add(

3.Restrictions.like("name","任%"));

4.criteria.addOrder(Order.desc("id"));

5.criteria.setMaxResults(1);

6.Testbooktb=(Testbook)criteria.uniqueResult();

7.tx.commit();

 

七、Restrictions类

HQL运算符

QBC运算符

含义

=

Restrictions.eq()

等于equal

<>

Restrictions.ne()

不等于notequal

>

Restrictions.gt()

大于greaterthan

>=

Restrictions.ge()

大于等于greaterthanorequal

<

Restrictions.lt()

小于lessthan

<=

Restrictions.le()

小于等于lessthanorequal

isnull

Restrictions.isnull()

等于空值

isnotnull

Restrictions.isNotNull()

非空值

like

Restrictions.like()

字符串模式匹配

and

Restrictions.and()

逻辑与

and

Restrictions.conjunction()

逻辑与

or

Restrictions.or()

逻辑或

or

Restrictions.disjunction()

逻辑或

not

Restrictions.not()

逻辑非

in(列表)

Restrictions.in()

等于列表中的某一个值

notin(列表)

Restrictions.not(Restrictions.in())

不等于列表中任意一个值

betweenxandy

Restrictions.between()

闭区间xy中的任意值

notbetweenxandy

Restrictions.not(Restrictions..between())

小于值X或者大于值y

 

<----------------------------------------------------------------------------------------------------------->

八、条件"或"方式组合查询条件

Java代码

1.Transactiontx=session.beginTransaction();

2.Criteriacriteria=session.createCriteria(Testbook.class);

3.Criterioncriterion1=Restrictions.or(Restrictions.like("name","任%"),

4.Restrictions.between("id",1000,1010));

5.criteria.add(criterion1);

6.List<Testbook>list=criteria.list();

7.tx.commit();

 

 

 

九、使用原生SQL语句设定查询条件

Java代码

1.Transactiontx=session.beginTransaction();

2.Criteriacriteria=session.createCriteria(Testbook.class);

3.criteria.add(Restrictions.sqlRestriction("{alias}.name=?","Narcissus",Hibernate.STRING));

4.List<Testbook>list=criteria.list();

5.tx.commit()

 

十、统计函数查询

Java代码

1.Transactiontx=session.beginTransaction();

2.Criteriacriteria=session.createCriteria(Testbook.class);

3.criteria.setProjection(Projections.max("price"));

4.DoublemaxValue=(Double)criteria.uniqueResult();

5.tx.commit();

6.System.out.println(maxValue);

 

十一、统计函数组合查询条件

Java代码

1.Transactiontx=session.beginTransaction();

2.Criteriacriteria=session.createCriteria(Testbook.class);

3.criteria.setProjection(Projections.max("price"));

4.DoublemaxValue=(Double)criteria.uniqueResult();

5.tx.commit();

6.System.out.println(maxValue);

 

 

十二、获取多个统计函数的值

Java代码

1.Transactiontx=session.beginTransaction();

2.Criteriacriteria=session.createCriteria(Testbook.class);

3.ProjectionListproList=Projections.projectionList();

4.proList.add(Projections.max("price"));

5.proList.add(Projections.min("price"));

6.proList.add(Projections.avg("price"));

7.proList.add(Projections.sum("price"));

8.proList.add(Projections.count("price"));

9.proList.add(Projections.countDistinct("price"));

10.proList.add(Projections.rowCount());

11.criteria.setProjection(proList);

12.Objectvalues[]=(Object[])criteria.uniqueResult();

13.tx.commit();

 

 

 

十三、分组查询

Java代码

1.Transactiontx=session.beginTransaction();

2.Criteriacriteria=session.createCriteria(Testbook.class);

3.criteria.setProjection(Projections.groupProperty("price"));

4.List<Double>list=criteria.list();

5.tx.commit();

 

十四、分组统计

Java代码

1.Transactiontx=session.beginTransaction();

2.Criteriacriteria=session.createCriteria(Testbook.class);

3.ProjectionListproList=Projections.projectionList();

4.proList.add(Projections.rowCount());//商品的个数

5.proList.add(Projections.sum("price"));

6.proList.add(Projections.groupProperty("name"));

7.criteria.setProjection(proList);

8.List<Double>list=criteria.list();

9.tx.commit();

 

 

 

十五、投影查询
在一个表中有很多个字段,投影查询只是查询某一个或多个字段,也称局部查询

 

Java代码

1.Transactiontx=session.beginTransaction();

2.Criteriacriteria=session.createCriteria(Testbook.class);

3.criteria.setProjection(Property.forName("price"));

4.criteria.add(Restrictions.gt("price",newDouble(40.0)))

5.List<Double>list=criteria.list();

6.tx.commit();

 

十六、使用Property类的forName()方法实现分组统计

 

Java代码

1.Transactiontx=session.beginTransaction();

2.Criteriacriteria=session.createCriteria(Testbook.class);

3.ProjectionListproList=Projections.projectionList();

4.proList.add(Projections.forName("price").max());

5.proList.add(Projections.forName("price").min());

6.proList.add(Projections.forName("price").avg());

7.proList.add(Projections.forName("category.id").group().as("c"));

8.criteria.setProjection(proList);

9.criteria.addOrder(Order.desc("c"));

10.List<Object[]>list=criteria.list();

11.tx.commit();

 

十七、使用DetachedCriteria对象实现离线查询

Java代码

1.//在表现层,构造DetachedCriteria对象,保存用户动态的查询条件

2.DetachedCriteriadetchedCriteria=DetachedCriteria.forClass(Testbook.class);

3.detchedCriteria.add(Restrictions.like("name","任%")).add(Restrictions.between("id",newInteger(1),newInteger(10)));

4.detchedCriteria.addOrder(Order.desc("id"));

6.//在业务逻辑层,DetachedCriteria对象与当前的Session对象进行绑定,获取查询结果

7.Sessionsession=HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();

8.Transactiontx=detchedCriteria.getExecutableCriteria(session);

9.List<Testbook>list=criteria.list();

10.tx.commit();

 

十八、根据示例对象进行查询

 

 

先定义一个模板然后把这个模板的样式传进去,查询,例如这里定义的Testbook中的名字为Narcissus的字段,进行查询,条件可以为一个也可以为多个,对应的就是where中的条件

 

Java代码

1.Testbooktb=newTestbook();

2.tb.setName("Narcissus");

3.Sessionsession=HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();

4.Transactiontx=session.beginTransaction();

5.Criteriacriteria=session.createCriteria(Testbook.class);

6.Criteria.add(Example.creaate(tb));

7.List<Testbook>list=criteria.list();

8.tx.commit();

 

 

 

分享到:
评论

相关推荐

    Hibernate查询方式代码示例

    **Hibernate查询方式详解** 在Java世界中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程将深入探讨Hibernate 3.x版本中的查询方式,包括基本查询、HQL(Hibernate Query ...

    Hibernate的查询方式

    ### Hibernate的查询方式详解 #### 引言 Hibernate作为Java领域中最流行的ORM(Object-Relational Mapping)框架之一,提供了一系列高效、灵活的查询机制,旨在桥接对象模型与关系数据库之间的鸿沟。本文将深入...

    hibernate的查询方式介绍和hibernate的批处理和连接池配置hibernate

    ### Hibernate 查询方式与批处理及连接池配置详解 #### 一、Hibernate 查询方式介绍 Hibernate 是一款优秀的 ORM(对象关系映射)框架,它能够极大地简化数据库操作,并提供多种查询方式来满足不同的业务需求。 #...

    Hibernate学习笔记和资料

    hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置...hibernate查询方式概述,HQL查询,QBC查询,分页,结果集封装方式 ,高级查询 查询的优化,一级缓存,二级缓存,批量查询,注解方式

    通用的hibernate查询

    【hibernate查询详解】 Hibernate,作为一款强大的Java对象关系映射(ORM)框架,极大地简化了数据库操作。它允许开发者使用面向对象的...理解并熟练掌握这些查询方式,将有助于我们在Java开发中更好地运用Hibernate。

    hibernate中的查询方式

    ### Hibernate中的查询方式详解 #### 一、HQL查询(Hibernate Query Language) HQL是Hibernate提供的面向对象的查询语言,其语法与SQL相似但并非完全相同。HQL的一个显著优势在于它具有很好的跨数据库能力,这...

    hibernate面试题2

    9. **Hibernate查询方式**: - **SQL**:直接执行SQL查询。 - **Criteria API**:面向对象的查询方式。 - **HQL(Hibernate Query Language)**:面向对象的查询语言,支持属性、参数、关联、分页和统计函数查询...

    Hibernate连表查询 Hibernate连表查询

    根据提供的文件信息,我们可以深入探讨Hibernate中的连表查询方法及其应用。下面将详细介绍与标题、描述及部分代码相关的几个核心知识点: ### Hibernate 连表查询基础 Hibernate 是一个开源的对象关系映射(ORM)...

    Hibernate_query查询数据表中的一个字段.

    无论哪种查询方式,最后都会返回一个结果列表,你可以遍历这个列表来获取并处理查询到的`username`字段的值。 总结,Hibernate提供多种方式查询数据表中的字段,包括HQL、Criteria API和DetachedCriteria,选择合适...

    三种查询方式跟踪Hibernate源码

    本文将详细阐述通过三种查询方式跟踪Hibernate源码的方法,帮助开发者更好地掌握其工作原理。 首先,我们来看第一种查询方式:HQL(Hibernate Query Language)查询。HQL是Hibernate专有的SQL方言,允许开发者以...

    struts+hibernate查询所有记录

    ### Struts+Hibernate查询所有记录 #### 一、概述 在Java Web开发中,Struts与Hibernate是非常流行的框架组合,用于构建复杂的企业级应用。本文将详细介绍如何利用Struts和Hibernate来实现对Oracle数据库中所有...

    hibernate多表联合查询

    在Hibernate中,可以使用以下几种方式来实现多表联合查询: - **HQL (Hibernate Query Language)** - **Criteria API** - **Native SQL** 本文将重点介绍如何使用HQL和Native SQL来实现多表联合查询。 #### 三、...

    Hibernate查询练习小例子

    利用MYSQL数据库提供的样例数据库world建立的查询小例子。已经建立好了数据库对应的...本项目主要是为了练习使用Hibernate查询数据库。如果有什么问题可以发站内信或者邮件asddf14@hotmail.com。我会尽量解答一下~~~

    hibernate查询详解

    hibernate查询详解 在Java开发中,Hibernate作为一款强大的ORM(Object-Relational Mapping)框架,极大地简化了数据库操作。本文将详细介绍Hibernate的五种查询方式,包括HQL查询、Criteria方法、动态查询...

    Hibernate查询语言HQL.PPT

    4. 使用 Hibernate 条件 API:提供了类型安全的面向对象的方式执行查询。 5. 使用本地 SQL 查询:Hibernate 只关心把 JDBC 结果集映射到持久对象图。 使用 HQL 的优点: * HQL 是一种面向对象的查询语言,易于学习...

    hibernate

    **六、Hibernate 查询方式** 1. **HQL**: Hibernate 专有的查询语言,类似SQL,但操作的是对象。 2. **Criteria API**: 动态构建查询条件,更加面向对象的查询方式。 3. **Native SQL**: 直接使用原生SQL进行查询,...

    六种方式实现hibernate查询

    六种方式实现Hibernate查询 Hibernate是一个功能强大的持久层框架,它提供了多种方式来查询数据库。下面我们将详细介绍六种方式实现Hibernate查询。 HQL查询 HQL(Hibernate Query Language)是Hibernate自己的...

    hibernate里面的 两种查询

    Hibernate提供了两种主要的查询方式:离线查询(Criteria API)和HQL(Hibernate Query Language)语句查询。这两种查询方法各有特点,适用于不同的场景,使得开发者可以根据实际需求灵活选择。 1. Hibernate ...

    hibernate实现动态SQL查询

    在Hibernate中,我们通常使用HQL(Hibernate Query Language)或Criteria API进行查询,但这些方式并不支持复杂的动态查询。为了实现动态SQL,我们可以借助于Hibernate的QBC(Query By Criteria)和Criteria API,...

    hibernate查询代码

    最后,`hibernate查询`这个压缩包可能包含了一些示例代码和配置文件,用于演示如何在Java项目中实现上述查询方式。通过分析这些文件,你可以更好地理解Hibernate查询的工作原理,并将其应用到自己的项目中。 总之,...

Global site tag (gtag.js) - Google Analytics