常用的Hql语句

  1     // HQL: Hibernate Query Language.
  2     // 特点:
  3     // >> 1,与SQL相似,SQL中的语法基本上都可以直接使用。
  4     // >> 2,SQL查询的是表和表中的列;HQL查询的是对象与对象中的属性。
  5     // >> 3,HQL的关键字不区分大小写,类名与属性名是区分大小写的。
  6     // >> 4,SELECT可以省略.
  7
  8     // 1,简单的查询,Employee为实体名而不是数据库中的表名(面向对象特性)
  9     hql = "FROM Employee";
 10     hql = "FROM Employee AS e"; // 使用别名
 11     hql = "FROM Employee e"; // 使用别名,as关键字可省略
 12
 13     // 2,带上过滤条件的(可以使用别名):Where
 14     hql = "FROM Employee WHERE id<10";
 15     hql = "FROM Employee e WHERE e.id<10";
 16     hql = "FROM Employee e WHERE e.id<10 AND e.id>5";
 17
 18     // 3,带上排序条件的:Order By
 19     hql = "FROM Employee e WHERE e.id<10 ORDER BY e.name";
 20     hql = "FROM Employee e WHERE e.id<10 ORDER BY e.name DESC";
 21     hql = "FROM Employee e WHERE e.id<10 ORDER BY e.name DESC, id ASC";
 22
 23     // 4,指定select子句(不可以使用select *)
 24     hql = "SELECT e FROM Employee e"; // 相当于"FROM Employee e"
 25     hql = "SELECT e.name FROM Employee e"; // 只查询一个列,返回的集合的元素类型就是这个属性的类型
 26     hql = "SELECT e.id,e.name FROM Employee e"; // 查询多个列,返回的集合的元素类型是Object数组
 27     hql = "SELECT new Employee(e.id,e.name) FROM Employee e"; // 可以使用new语法,指定把查询出的部分属性封装到对象中
 28
 29     // 5,执行查询,获得结果(list、uniqueResult、分页 )
 30     Query query = session.createQuery("FROM Employee e WHERE id<3");
 31     query.setFirstResult(0);
 32     query.setMaxResults(10); // 等同于 limit 0,10
 33     //两种查询结果list、uniqueResult
 34     // List list = query.list(); // 查询的结果是一个List集合
 35     // Employee employee = (Employee) query.uniqueResult();// 查询的结果是唯一的一个结果,当结果有多个,就会抛异常
 36
 37     // 6,方法链
 38     List list = session.createQuery(//
 39             "FROM Employee e")//
 40             .setFirstResult(0)//
 41             .setMaxResults(10)//
 42             .list();
 43
 44     // 7,聚集函数:count(), max(), min(), avg(), sum()
 45     hql = "SELECT COUNT(*) FROM Employee"; // 返回的结果是Long型的
 46     hql = "SELECT min(id) FROM Employee"; // 返回的结果是id属性的类型
 47
 48     //8,分组: Group By ... Having
 49     hql = "SELECT e.name,COUNT(e.id) FROM Employee e GROUP BY e.name";
 50     hql = "SELECT e.name,COUNT(e.id) FROM Employee e GROUP BY e.name HAVING count(e.id)>1";
 51     hql = "SELECT e.name,COUNT(e.id) FROM Employee e WHERE id<9 GROUP BY e.name HAVING count(e.id)>1";
 52     hql = "SELECT e.name,COUNT(e.id) " + //
 53          "FROM Employee e " + //
 54          "WHERE id<9 " + //
 55          "GROUP BY e.name " + //
 56          "HAVING count(e.id)>1 " + //
 57          "ORDER BY count(e.id) ASC";
 58     hql = "SELECT e.name,COUNT(e.id) AS c " + //
 59          "FROM Employee e " + //
 60          "WHERE id<9 " + //
 61          "GROUP BY e.name " + //
 62          "HAVING count(e.id)>1 " + // 在having子句中不能使用列别名
 63          "ORDER BY c ASC"; // 在orderby子句中可以使用列别名
 64
 65     // 9,连接查询 / HQL是面向对象的查询
 66      //>> 内连接(inner关键字可以省略)
 67      hql = "SELECT e.id,e.name,d.name FROM Employee e JOIN e.department d";
 68      hql = "SELECT e.id,e.name,d.name FROM Employee e INNER JOIN e.department d";
 69      //>> 左外连接(outer关键字可以省略)
 70      hql = "SELECT e.id,e.name,d.name FROM Employee e LEFT OUTER JOIN e.department d";
 71      //>> 右外连接(outer关键字可以省略)
 72      hql = "SELECT e.id,e.name,d.name FROM Employee e RIGHT JOIN e.department d";
 73      //可以使用更方便的方法
 74      hql = "SELECT e.id,e.name,e.department.name FROM Employee e";
 75
 76     // 10,查询时使用参数
 77     // >> 方式一:使用‘?‘占位
 78      hql = "FROM Employee e WHERE id BETWEEN ? AND ?";
 79      List list2 = session.createQuery(hql)//
 80          .setParameter(0, 5)// 设置参数,第1个参数的索引为0。
 81          .setParameter(1, 15)//
 82          .list();
 83
 84     // >> 方式二:使用变量名
 85      hql = "FROM Employee e WHERE id BETWEEN :idMin AND :idMax";
 86      List list3 = session.createQuery(hql)//
 87          .setParameter("idMax", 15)//
 88          .setParameter("idMin", 5)//
 89          .list();
 90
 91     // 当参数是集合时,一定要使用setParameterList()设置参数值
 92      hql = "FROM Employee e WHERE id IN (:ids)";
 93      List list4 = session.createQuery(hql)//
 94          .setParameterList("ids", new Object[] { 1, 2, 3, 5, 8, 100 })//
 95          .list();
 96
 97     // 11,update与delete,不会通知Session缓存
 98     // >> Update
 99     int result = session.createQuery(//
100             "UPDATE Employee e SET e.name=? WHERE id>15")//
101             .setParameter(0, "无名氏")//
102             .executeUpdate(); // 返回int型的结果,表示影响了多少行。
103     // >> Delete
104     int result1 = session.createQuery(//
105             "DELETE FROM Employee e WHERE id>15")//
106             .executeUpdate(); // 返回int型的结果,表示影响了多少行。  
时间: 2024-09-30 06:35:21

常用的Hql语句的相关文章

【SSH】Hibernate:常用的HQL语句

Hibernate query language 简称HQL,是实际开发中最长的hibernate查询封装模式. HQL提供了更加接近传统SQL语句的查询方法: <span style="font-family:Verdana;font-size:14px;">[select/update/delete-] [from-][where-][groupby-] [having -][order by-]</span> 实体查询: <span style=&q

常用的Hql语句(转)

原文地址:http://blog.csdn.net/v123411739/article/details/28644007     尊重原创,请访问原文地址 // HQL: Hibernate Query Language. // 特点: // >> 1,与SQL相似,SQL中的语法基本上都可以直接使用. // >> 2,SQL查询的是表和表中的列:HQL查询的是对象与对象中的属性. // >> 3,HQL的关键字不区分大小写,类名与属性名是区分大小写的. // >

hibernate中常用的Hql语句总结

// HQL: Hibernate Query Language. // 特点: // >> 1,与SQL相似,SQL中的语法基本上都可以直接使用. // >> 2,SQL查询的是表和表中的列:HQL查询的是对象与对象中的属性. // >> 3,HQL的关键字不区分大小写,类名与属性名是区分大小写的. // >> 4,SELECT可以省略. // 1,简单的查询,Employee为实体名而不是数据库中的表名(面向对象特性) hql = "FROM 

HQL语句大全

Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承.多态 和关联之类的概念. 第 15 章 HQL: Hibernate查询语言Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承.多态 和关联之类的概念. 15.1. 大小写敏感性问题除了Java类与属

Spring中常用的hql查询方法(getHibernateTemplate()) 【转】

一.find(String queryString); 示例:this.getHibernateTemplate().find("from bean.User"); 返回所有User对象 二.find(String queryString , Object value); 示例:this.getHibernateTemplate().find("from bean.User u where u.name=?", "test"); 或模糊查询:th

hibernate 之 HQL语句总结【转】

1. 查询整个映射对象所有字段 //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段 String hql = "from Users"; Query query = session.createQuery(hql); List<Users> users = query.list(); for(Users user : users){ System.out.println(user.getName() + " : " + user.ge

项目中常用的SQL语句

摘要: 对于像我一样的菜鸟级别人物来说,接触的项目比较少,平常做的那些练习,包括三层中,一般也只能用到增删改查,当然这些增删改查语句是学数据库语句的入门,在百度上搜索一大堆,w3cschool中帮助文档也可以查阅. 这里是把平常用的增删改做一个小小总结,对一些小小项目也是比较适用的 ,当然,好记性不如烂笔头吗,这个时代纸质版的笔记感觉很欠缺,因为想要看的时候,你得找到那本书,而且要翻翻在哪里,感觉很不方便.并且电子版 的随便copy之类的都可以. 常用的sql语句(增删改查) 1.增加.插入语句

50个常用的sql语句

50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题: 1.查询"001"课程比"002"课程成绩高的所有学生的学号: select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC wher

常用的MySQL语句写法

常用的MySQL语句写法 MySQL的SQL语句写法,除了那些基本的之外,还有一些也算比较常用的,这里记录下来,以便以后查找.     好记性不如烂笔头,这话说的太有道理了,一段时间不写它,还真容易忘记.大家不要纠结这些SQL语句包含的业务或是其它问题,本文只是一篇笔记而已.     将数据从T1表导入到T2表 INSERT INTO T2 (C1,C2) SELECT C1,C2 FROM T1 [WHERE C1 = XX AND C2 = XX ORDER BY C1] 使用T2表的NAM