HQL:Hibernate专属语言,可以跨数据库

一、基本查询

 1 public void testQuery(){
2 Session session = HibernateUtils.getSession();
3 String hql = "from Person";
4 Query query = session.createQuery(hql);
5 List<Person> list = query.list();
6 for(Person p : list){
7 System.out.println(p);
8 }
9 HibernateUtils.close(session);
10 }

  单个属性列查询

1 //查询单个属性
2 String hql = "select p.pname from Person p";
3 Query query = session.createQuery(hql);
4 List<String> list = query.list();

  多个属性查询

1 //查询多列
2 String hql = "select p.id,p.pname from Person p";
3 Query query = session.createQuery(hql);
4 List<Object[]> objArrList = query.list();
5 for(Object[] objArr : objArrList){
6 System.out.println("编号:"+objArr[0]+" 姓名:"+objArr[1]);
7 }

二、Hibernate分页查询

1 Session session = HibernateUtils.getSession();
2 String hql = "from Person";
3 Query query = session.createQuery(hql);
4 //设置分页查询
5 query.setFirstResult(0);
6 query.setMaxResults(5);
7 List<Person> list = query.list();

三、限定查询

String hql = "from Person  where id = ?";
Query query = session.createQuery(hql);
query.setParameter(0, 5);
List<Person> list = query.list();
1 Session session = HibernateUtils.getSession();
2 String hql = "from Person where id = :id";
3 Query query = session.createQuery(hql);
4 query.setParameter("id", 5);
5 List<Person> list = query.list();

四、统计查询

1 String hql = "select count(*) from Person p";
2 Query query = session.createQuery(hql);
3 Object result = query.uniqueResult();

五、分组统计查询

1 String hql = "select avg(p.salary),p.pgender from Person p group by p.pgender";
2 Query query = session.createQuery(hql);
3 List<Object[]> objArrList = query.list();

六、投影查询

建立一个业务Bean,在bean提供有参的构造器来接收sql的返回值,创建出对象

七、排序查询

1 String hql = "from Person p order by p.salary desc";
2 Query query = session.createQuery(hql);
3 List<Person> list = query.list();

八、从配置文件中设置查询,然后提取

在 Person.hbm.xml配置文件中
1 <query name="getPerson">
2 <![CDATA[
3 from Person p where p.salary > 400
4 ]]>
5 </query>
1 Query query = session.getNamedQuery("getPerson");
2 List<Person> list = query.list();

Hibernate4.3 HQL查询的更多相关文章

  1. Hibernate--------八大类HQL查询集合

    Hibernate的   八大类HQL查询集合 Hibernate的八大类HQL查询集合: 一:属性查询(SimplePropertyQuery) 1,单一属性查询 *返回结果集属性列表,元素类型和实 ...

  2. [NHibernate]HQL查询

    目录 写在前面 文档与系列文章 查询的几种方式 HQL查询 一个例子 总结 写在前面 上篇文章介绍了nhibernate在项目中的基本配置,包括数据库连接字符串的设置,映射文件的配置及需注意的地方,这 ...

  3. hibernate学习(7)——HQL查询

    1.HQL查询定义 Hibernate查询分类: 1. get/load 根据OID检索 2. 对象视图检索 c.getOrders 3. Sql语句 createSqlQuery 4. Hql语句 ...

  4. HQL查询——聚集函数

    HQL查询--聚集函数 HQL也支持在选出的属性上使用聚集函数.HQL支持的聚集函数与SQL的完全相同: (1)avg:计算属性平均值: (2)count:统计选择对象的数量: (3)max:统计属性 ...

  5. HQL查询——关联和连接

    HQL查询--关联和连接 为了便于理解有关的使用关联和连接进行HQL查询,首先提供两个具有关联关系的持久化类:Person类和MyEvent类 Person类: import javax.persis ...

  6. HQL查询——from子句

    HQL查询--from子句 1.from是最基本的HQL语句,from关键字后紧跟持久化类的类名: from Person 表示从Person持久化类中选出全部的实例. 2.推荐为持久化类的每个实例起 ...

  7. HQL查询——HQL查询的基本用法

    HQL查询--HQL查询的基本用法 1.HQL语法类似于SQL语法,但是需要注意的是,HQL是一种完全面向对象的查询语言.SQL语言操作的对象是数据表.列等数据库对象,而HQL语言的操作对象是类.实例 ...

  8. 转: Hibernate HQL查询 插入 更新(update)实例

    1.实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql=”from User user ”;List list=session.CreateQuery(hq ...

  9. NHibernate系列文章二十二:NHibernate查询之HQL查询(附程序下载)

    摘要 NHibernate提供了多种查询方式,最早的HQL语言查询.Criteria查询和SQL Query,到NHibernate 3.0的Linq NHibernate,NHIbernate 4. ...

随机推荐

  1. foreach循環體控制

    通常情況下,在程式中的cursor定義之前,整合了l_sql變量后,轉化sql語句時,通過檢查STATUS的值來判斷sql語句是否有錯誤. 語句如:              if STATUS th ...

  2. react项目初始化配置

    ## [初始化项目](https://facebook.github.io/create-react-app/)) + 安装 ``` npx create-react-app myreact ``` ...

  3. make编译出错 usr/bin/ld: /data/app/openssl/lib/libcrypto.a(ecs_asn1.o): relocation R_X86_64_PC32 against symbol `ECDSA_SIG_it' can not be used when making a shared object; recompile with -fPIC

    当make编译出现错误 usr/bin/ld: /data/app/openssl/lib/libcrypto.a(ecs_asn1.o): relocation R_X86_64_PC32 agai ...

  4. Ubuntu 20.04.1 安装软件和系统配置脚本

    #!/bin/bash # https://launchpad.net/ubuntu # https://www.easyicon.net # https://download-chromium.ap ...

  5. 跳转语句 break 和 continue

    break跳出循环体,结束本次循环. continue结束本次循环. for(var i=0; i<5; i++){ if(i == 3) break; document.write(" ...

  6. 教你如何在linux操作系统下玩【俄罗斯方块】高清+语音教程

    主讲人小冰QQ:986945193 新浪微博:http://weibo.com/mcxiaobing 百度贴吧:忆驹家族小冰 腾讯微博:http://t.qq.com/q986945193 高清视频 ...

  7. Android开发之AlertDialog警告提示框删除与取消 详解代码

    package cc.jiusansec.www; import android.app.Activity; import android.app.AlertDialog; import androi ...

  8. Fitness - 07.23 - Congratulation!

    倒计时161天 运动54分钟,共计5组半,5.8公里.拉伸5分钟. 每组跑步10分钟(6.5KM/h),走路1分钟(5.5KM/h). 终于突破了耐力跑的一天,可喜可贺! 差一点就到6公里了,觉得自己 ...

  9. 浅析LR.Net工作流引擎

    在当代信息化软件系统开发中,工作流引擎是其中非常重要的一环.所谓工作流引擎,是指工作流作为软件系统的一部分, 其中包括了流程的节点管理.流向管理.流程样例管理.审核管理等重要功能. 工作流引擎可根据角 ...

  10. 让mvn打包时跳过Junit测试

    原来在使用命令 “mvn clean package” 发生了测试报错,说是几个testcase出现问题了. 另一方催jar得紧,于是用 命令 “mvn package -DskipTests”,只让 ...