文档章节

hibernate hql查询(需完善)

z
 zdatbit
发布于 2016/03/10 21:12
字数 456
阅读 46
收藏 0

使用HQL需要四步

  1. 得到Session

  2. 编写HQL语句

  3. 创建Query对象(Query接口是HQL 查询接口。它提供了各种的查询功能)

  4. 执行查询,得到结果

sessionFactory =new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
String hql = “from test”;
Query query = session.createQuery(hql);
List<Street> list = query.list();

HQL使用:

    使用命名参数:Hibernate使用命名参数与JDBC查询参数?相似,但是Hibernate参数不容易引起混乱。如果使用JDBC查询参

数,那么每当添加、修改或删除SQL语句的内容时,都必须更新那些设置参数的Java代码,因为要根据参数在语句中出现的次序识

别它们。

一个简单的命名参数参数示例如下:

String hql = "from product where price > :price";
Query query = session.createQuery(hql);
query.setDouble("price",25.0);
List results = query.list();

使用hql进行分页,

Query接口中有两个用于分页的方法:setFirstResult()和setMaxResults()。setFirstResult()方法接受一个整数,这个整数表示结果

集中的第一行,编号从0开始。可以使用setMaxResults()方法让Hibernate只返回固定数量的对象。

简单示例如下:

Query query = session.createQuery("from product");
query.setFirstResult(1);
query.setMaxResults(20);
List result = query.list();

获取唯一的结果:

uniqueResult()方法,可以使用它从一个HQL查询中只获取一个对象。如果要从多个结果集中返回第一个结果,需要使用

setMaxResults()方法,否则会返回NonUniqueResultException异常,如果查询结果中没有相应的结果,则返回null

简单示例如下:

String hql="from product where price > : price";
Query query = session.createQuery(hql);
query.setDouble("price","25.0");
query.setMaxResults(1);
product product = (product) query.uniqueResult();

补充:

HQL的用法是查询对象,而不是数据库,比如JAVA bean是User,对应的数据库为t_user,此时HQL语句应为 from User而非from t_user,另外,如果要加参数,要加单引号

© 著作权归作者所有

共有 人打赏支持
z
粉丝 3
博文 52
码字总数 7610
作品 0
海淀
私信 提问
hibernate hql 分页查询

今天封装了自己的hibernateDao,主要是基于hql的,期间遇到一个问题,最后解决了,和大家分享分享 其他hibernate的查询,像QBE,QBC,这些就不说了,如果用hibernate还是hql最强大,也很容易...

peanutmain
2012/06/10
0
0
Hibernate(十三)QBC 检索和本地 SQL 检索

QBC 查询就是通过使用 Hibernate 提供的 Query By Criteria API 来查询对象,这种 API 封装了 SQL 语句的动态拼装,对查询提供了更加面向对象的功能接口 本地SQL查询来完善HQL不能涵盖所有的...

leeqico
2018/06/25
0
0
Hibernate使用小记

在使用Hibernate开发的过程中,遇到场景in条件查询,查询条件里的个数超过1w甚至更高(且不讨论这种方式是否合理),在生成hql,执行查询的时候发现执行list()方法的时候特别慢。后经从网查询...

Only_小白
2016/05/10
178
0
(J2EE学习笔记)六种方式实现hibernate查询

对Hibernate的底层调用数据库查询并不是很了解,引用了这位前辈的一篇博文。 注明文章出处:http://www.cnblogs.com/shiyangxt/archive/2009/01/13/1375151.html 实现hibernate查询的六种方式...

w1sw
2016/04/15
0
0
Java程序员从笨鸟到菜鸟之(六十四)细谈Hibernate(十五)HQL与QBC查询方式详解

首先来看一下,hibernate提供的几种检索方式: 1.导航对象图检索方式 :根据已经加载的对象,导航到其他对象。例如,对于已经加载的Customer对象,调用它的getOrders().iterator()方法就可以...

长平狐
2012/11/12
178
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS 选择器参考手册

CSS 选择器参考手册 选择器 描述 [attribute] 用于选取带有指定属性的元素。 [attribute=value] 用于选取带有指定属性和值的元素。 [attribute~=value] 用于选取属性值中包含指定词汇的元素。...

Jack088
今天
1
0
数据库篇一

数据库篇 第1章 数据库介绍 1.1 数据库概述  什么是数据库(DB:DataBase) 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据...

stars永恒
今天
2
0
Intellij IDEA中设置了jsp页面,但是在访问页面时却提示404

在Intellij IDEA中设置了spring boot的jsp页面,但是在访问时,却出现404,Not Found,经过查找资料后解决,步骤如下: 在Run/Debug Configurations面板中设置该程序的Working Directory选项...

uknow8692
昨天
3
0
day24:文档第五行增内容|每月1号压缩/etc/目录|过滤文本重复次数多的10个单词|人员分组|

1、在文本文档1.txt里第五行下面增加如下内容;两个方法; # This is a test file.# Test insert line into this file. 分析:给文档后增加内容,可以用sed 来搞定;也可以用while do done...

芬野de博客
昨天
2
0
深入理解JVM—JVM内存模型

深入理解JVM—JVM内存模型 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存...

onedotdot
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部