hibernate中.常见的hql查询语句
hql是非常有意识的被设计为完全面向对象的查询
基本规则:
1.hql语法类似于sql,但它后面跟的不是表名和字段名,而是类名和属性名
2.hql大小写不敏感.但是设计java类名,包名,属性名时大小写敏感.
public void test1(){ //重要
Session session = HibUtil.getSession();
Transaction tx =session.beginTransaction();
Query query =session.createQuery("from Emp e");
List<Emp> empList = query.list();
for(Emp e:empList){
System.out.println(e.getEname());
}
tx.commit();
session.close();
}
public void test2(){ //单个对象 重要
Session session = HibUtil.getSession();
Transaction tx =session.beginTransaction();
Query query =session.createQuery("select count(*) from Emp e");//集合函数查询
Long n = (Long) query.uniqueResult();
System.out.println(n);
tx.commit();
session.close();
}
public void test3(){ //单个对象 重要
Session session = HibUtil.getSession();
Transaction tx =session.beginTransaction();
Query query =session.createQuery("from Emp e where e.empno=7369");
Emp emp = (Emp) query.uniqueResult();
System.out.println(emp.getEname());
tx.commit();
session.close();
}
public void test4(){ //Object[] 次重要
Session session = HibUtil.getSession();
Transaction tx =session.beginTransaction();
Query query =session.createQuery("select e.empno,e.ename from Emp e ");
List<Object[]> list =query.list();
for(Object[] obj:list){
System.out.println(obj[0]+"-->"+obj[1]);
}
tx.commit();
session.close();
}
public void test5(){ //map 次重要
Session session = HibUtil.getSession();
Transaction tx =session.beginTransaction();
Query query =session.createQuery("select new map(e.empno as empno,e.ename as ename) from Emp e ");
List<Map<String,Object>> list =query.list();
for(Map<String,Object> map:list){
System.out.println(map.get("empno")+"-->"+map.get("ename"));
}
tx.commit();
session.close();
}
public void test6(){ //对象 次重要
Session session = HibUtil.getSession();
Transaction tx =session.beginTransaction();
Query query =session.createQuery("select new com.cdsxt.hib.vo.EmpVo(e.empno,e.ename) from Emp e ");//投影查询
List<EmpVo> list =query.list();
for(EmpVo emp:list){
System.out.println(emp.getEmpno()+"-->"+emp.getEname());
}
tx.commit();
session.close();
}
public void test7(){ //where条件 重要
Session session = HibUtil.getSession();
Transaction tx =session.beginTransaction();
// Query query =session.createQuery("from Emp e where e.job=?");
// query.setParameter(0, "CLERK");//?是从0开始的
Query query =session.createQuery("from Emp e where e.job=:job");
query.setParameter("job", "CLERK");
List<Emp> list =query.list();
for(Emp emp:list){
System.out.println(emp.getEmpno()+"-->"+emp.getEname());
}
tx.commit();
session.close();
}
public void test8(){ //where条件 重要
Session session = HibUtil.getSession();
Transaction tx =session.beginTransaction();
Query query =session.createQuery("from Emp e where e.dept.deptno=:deptno");
query.setParameter("deptno", 10);
List<Emp> list =query.list();
for(Emp emp:list){
System.out.println(emp.getEmpno()+"-->"+emp.getEname()+"-->"+emp.getDept().getDname());
}
tx.commit();
session.close();
}
public void test9(){ //where条件 重要
Session session = HibUtil.getSession();
Transaction tx =session.beginTransaction();
Query query =session.createQuery("from Emp e left outer join e.dept"); //hql会自动匹配e.deptno=dept.deptno
query.list();
tx.commit();
session.close();
}
public void test10(){ //where条件 重要
Session session = HibUtil.getSession();
Transaction tx =session.beginTransaction();
SQLQuery sqlQuery=session.createSQLQuery("select * from Emp e where e.ename like ?");
sqlQuery.setParameter(0, "%A%");
sqlQuery.addEntity(Emp.class);
List<Emp> empList = sqlQuery.list();
for(Emp emp:empList){
System.out.println(emp.getEmpno()+"-->"+emp.getEname()+"-->"+emp.getDept().getDname());
}
tx.commit();
session.close();
}

hibernate中.常见的hql查询语句的更多相关文章
- J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())
J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate()) 当我们使用Hibernate进行数据的CRUD操作时,利用模版进行操作不失为一种方法. ...
- Hibernate HQL查询语句总结
Hibernate HQL查询语句总结 1. 实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql="from User user ";L ...
- hibernate的hql查询语句总结
这篇随笔将会记录hql的常用的查询语句,为日后查看提供便利. 在这里通过定义了三个类,Special.Classroom.Student来做测试,Special与Classroom是一对多,Class ...
- HQL语句中数据类型转换,及hibernate中createQuery执行hql报错
一.HQL语句中数据类型转换: 我们需要从数据库中取出序号最大的记录,想到的方法就是使用order by子句进行排序(desc倒序),然后取出第一个对象,可是当初设计数据库时(我们是在原来的数据库的基 ...
- Hibernate中的多表查询及抓取策略
1.Hibernate中的多表查询 1.1SQL中的多表查询 [交叉连接] select * from A,B; [内连接] 显示内连接:inner join(inner 可以省略) Select * ...
- Hibernate中常见的异常处理
本文引自:http://www.blogjava.net/sy1214520/archive/2008/10/21/235667.html 本文总结Hibernate中常见的异常. 1. net.sf ...
- getHibernateTemplate()(Spring中常用的hql查询方法)
Spring中常用的hql查询方法(getHibernateTemplate()) --------------------------------- 一.find(String queryStrin ...
- 【hql】spring data jpa中 @Query使用hql查询 问题
spring data jpa中 @Query使用hql查询 问题 使用hql查询, 1.from后面跟的是实体类 不是数据表名 2.字段应该用实体类中的字段 而不是数据表中的属性 实体如下 hql使 ...
- Hibernate学习之hql查询语句
* 页面上数据的字段和数据库中字段差不多,这个时候,采用迫切连接 结构比较好,如果页面上的字段很少,要按照需求加载数据,采用带构造函数的select查询 实例讲解:转自:http://www.cn ...
随机推荐
- 复分析可视化方法:笔记:log(z)的可视化微分法
当z转过θ时,我们来看看发生了什么: 左图中的空心箭头代表z的变化量,其长度为rδ,方向为pi/2+θ: 右图中的实心箭头代表log(z)的变化量,其长度为δ,方向为pi/2. 因此,从左图空心箭头到 ...
- 介绍了如何取成员函数的地址以及调用该地址:C++
摘要:介绍了如何取成员函数的地址以及调用该地址. 关键字:C++成员函数 this指针 调用约定 一.成员函数指针的用法 在C++中,成员函数的指针是个比较特殊的东西.对普通的函数指针来说,可以视为一 ...
- Ubuntu 11.10 H3C iNode 客户端安装
下载客户端,放到桌面 双击打开,点击解压缩 Ctrl+Alt+T打开终端,依次输入以下代码并回车 代码: cd 桌面sudo cp iNodeClient /usr -Rcd /usr/iNodeCl ...
- PHP PDO 预处理语句与存储过程
很多更成熟的数据库都支持预处理语句的概念. 什么是预处理语句?可以把它看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制.预处理语句可以带来两大好处: 查询仅需解析(或预处理)一 ...
- Microsoft Dynamics CRM 2011 安装完全教程
作者:卞功鑫,转载请保留.http://www.cnblogs.com/BinBinGo/p/4302612.html 环境介绍 WINDOWS 2008 R2 Datacenter Microsof ...
- Ubuntu-14.04.1 desktop安装时遇到的小问题
su root认证失败:sudo passwd root,然后设置新密码. 重装linux导致g++显示已安装,但无法使用:将"系统设置"/"软件源"中所有更新 ...
- Delphi Webbrowser使用方法详解(一)
1.webbroser介绍 该组件是一个浏览器组件,可以显示一个指定地址的网页.设置网页打开时的主页以及对网页进行相关的操作,同时也可以对HTML文件进行剪切.复制.粘贴.删除等操作.该 组件在Int ...
- 解决npm下载包失败的问题
在我朝,用npm直接从官方的镜像下载包,经常会出现网络超时下载失败的问题,具体原因大家都懂,我就不说了. 不过,这些都无法阻挡我们对知识的渴望,一下提供几种我在工作中的解决办法,希望能帮助你. 1.安 ...
- 基于Linux的Samba开源共享解决方案测试(三)
在极限写场景下,对于网关的网络监控如图: 在极限写场景下,对于网关的网络监控如图: 在极限混合读写场景下,对于网关的网络监控如图: 在极限混合读写场景下,对于客户端的网络监控如图: 双NAS网关100 ...
- linux优化之全过程
基于开放源代码的Linux给用户提供了这样一个平台:可以根据自己的软.硬件环境,定制自己的Linux应用环境.因此,根据每个用户不同的应用范围定制应用环境,可以将Linux系统的性能提升到新的高度. ...