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查询语句的更多相关文章

  1. J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())

    J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())   当我们使用Hibernate进行数据的CRUD操作时,利用模版进行操作不失为一种方法. ...

  2. Hibernate HQL查询语句总结

    Hibernate HQL查询语句总结 1. 实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql="from User user ";L ...

  3. hibernate的hql查询语句总结

    这篇随笔将会记录hql的常用的查询语句,为日后查看提供便利. 在这里通过定义了三个类,Special.Classroom.Student来做测试,Special与Classroom是一对多,Class ...

  4. HQL语句中数据类型转换,及hibernate中createQuery执行hql报错

    一.HQL语句中数据类型转换: 我们需要从数据库中取出序号最大的记录,想到的方法就是使用order by子句进行排序(desc倒序),然后取出第一个对象,可是当初设计数据库时(我们是在原来的数据库的基 ...

  5. Hibernate中的多表查询及抓取策略

    1.Hibernate中的多表查询 1.1SQL中的多表查询 [交叉连接] select * from A,B; [内连接] 显示内连接:inner join(inner 可以省略) Select * ...

  6. Hibernate中常见的异常处理

    本文引自:http://www.blogjava.net/sy1214520/archive/2008/10/21/235667.html 本文总结Hibernate中常见的异常. 1. net.sf ...

  7. getHibernateTemplate()(Spring中常用的hql查询方法)

    Spring中常用的hql查询方法(getHibernateTemplate()) --------------------------------- 一.find(String queryStrin ...

  8. 【hql】spring data jpa中 @Query使用hql查询 问题

    spring data jpa中 @Query使用hql查询 问题 使用hql查询, 1.from后面跟的是实体类 不是数据表名 2.字段应该用实体类中的字段 而不是数据表中的属性 实体如下 hql使 ...

  9. Hibernate学习之hql查询语句

    *  页面上数据的字段和数据库中字段差不多,这个时候,采用迫切连接  结构比较好,如果页面上的字段很少,要按照需求加载数据,采用带构造函数的select查询 实例讲解:转自:http://www.cn ...

随机推荐

  1. 编程写一个方法时,注意方法中传参数的数量最好不要超过5个,超过5个怎么办?可以用struct或class,或一个字典类

    图  1 一.从图1发现了什么问题呢? 答案:1.参数传的的太多了:2.另外注释也没写好. 说明:一个方法中,传参数的数量最好不要超过5个. 应该采用:struct或class,或一个字典类都行.其中 ...

  2. 禁止HTML页面缓存

    head标签里增加: <meta http-equiv="X-UA-Compatible" content="IE=8"> <meta htt ...

  3. .gitignore 存放位置

    放在仓库根目录下即可.比如你的仓库在“D:\MYREPO”,位置就是“D:\MYREPO\.gitignore”. 模板可从GITHUB上COPY一份.

  4. qt creator 快捷键 (一)

    F1        查看帮助F2        跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2    声明和定义之间切换F4        头文件和源文件之间切换Ctrl+1     ...

  5. BASIC-2_蓝桥杯_01字串

    问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能.它们的前几个是: 请按从小到大的顺序输出这32种01串. 输入格式 本试题没有输入. 输出格式 输出32行,按从小到大的顺 ...

  6. [转]NSIS常用代码整理

    转自 http://www.flighty.cn/html/bushu/20120827_156.html 这是一些常用的NSIS代码,少轻狂特意整理出来,方便大家随时查看使用.不定期更新哦~~~ ; ...

  7. Discuz论坛管理的问题汇总

    Discuz论坛在Linux上搭建成功了, 不得不说, 其功能是非常强大的, 可以满足已知的绝大多数的需求. 搭建完成后也有一些问题, 在这里汇总一下, 以便将来查阅. 1. 显示未处理用户信息, 但 ...

  8. ubuntu 查看系统配置

    1, 主板信息 .查看主板的序列号 -------------------------------------------------- #使用 命令 dmidecode | grep -i 'ser ...

  9. Unreal Engine 4 反射机制的实现

    转自:http://blog.csdn.net/noahzuo/article/details/51482255 反射机制 反射机制指的是程序可以在运行期间进行检测和修改自己状态的能力. UE4引擎使 ...

  10. BCGcontrolBar(一) MFC界面库简介

    原帖地址:http://blog.csdn.net/zw514159799/article/details/9148385 英文原文:http://www.bcgsoft.com/bcgcontrol ...