Hibernate 操作语言简介说明
Hibernate拥有自己的一套操作语言,采用此种语言,可以将对象正确的翻译为sql语言,
对数据表进行相应的操作,
我们将这种语言称之为"HQL" 下文将着重讲述HQL的相关说明,
如下所示:
HQL语言注意事项: 在HQL中操作关键字 如:where from select它不区分大小写 但是表名及列名区分大小写
可使用一下的From语法:
下面是使用 INSERT INTO 语句的简单的语法:
以下列出了几种可用方法:
例:
例: 取第一页数据,每次取10行数据
对数据表进行相应的操作,
我们将这种语言称之为"HQL" 下文将着重讲述HQL的相关说明,
如下所示:
HQL语言注意事项: 在HQL中操作关键字 如:where from select它不区分大小写 但是表名及列名区分大小写
一、FROM 语句
加载一个完整的对象并持久化,可使用一下的From语法:
String hql = "FROM User"; Query query = session.createQuery(hql); list results = query.list(); --当需在HQL中完全限定类名,则需指定包和类名 String hql = "FROM com.Java265.User"; Query query = session.createQuery(hql); List results = query.list(); 二、AS 语句在HQL中我们可使用AS语句为类取一个别名,此关键字在长查询中非常有用,如下所示:
String hql = "FROM User AS E"; Query query = session.createQuery(hql); List results = query.list(); ---关键字 AS也可省略,直接在类名后面加上一个别名即可 String hql = "FROM User E"; Query query = session.createQuery(hql); List results = query.list();
三、SELECT 语句
SELECT语句同from语句的不同之处,在于select 可只选定几个属性,如下所示:String hql = "SELECT E.Name FROM User E"; Query query = session.createQuery(hql); List results = query.list();
四、WHERE 语句
String hql = "FROM User E WHERE E.id = 88"; Query query = session.createQuery(hql); List results = query.list();
五、ORDER BY 语句
String hql = "FROM User E WHERE E.id > 88 ORDER BY E.salary DESC"; Query query = session.createQuery(hql); List results = query.list(); 当你需要使用多个属性进行排序, 只需要在 ORDER BY 语句后面添加你要进行排序的属性即可,使用逗号进行分割 String hql = "FROM User E WHERE E.id > 88 " + "ORDER BY E.firstName DESC, E.salary DESC "; Query query = session.createQuery(hql); List results = query.list();
六、GROUP BY 语句
String hql = "SELECT SUM(E.salary), E.Name FROM user E " + "GROUP BY E.Name"; Query query = session.createQuery(hql); List results = query.list();
七、使用命名参数
Hibernate 的 HQL 查询功能支持命名参数 使用这种方式可避免出现SQL注入式攻击String hql = "FROM User E WHERE E.id = :user_id"; Query query = session.createQuery(hql); query.setParameter("user",8888); List results = query.list();
八、UPDATE 语句
String hql = "UPDATE User set salary = :salary " + "WHERE id = :user_id"; Query query = session.createQuery(hql); query.setParameter("salary",9000); query.setParameter("user_id",888); int result = query.executeUpdate(); System.out.println("Rows affected: " + result);
九、DELETE 语句
DELETE 语句可以用来删除一个或多个对象。以下是使用 DELETE 语句的简单语法:String hql = "DELETE FROM User " + "WHERE id = :user_id"; Query query = session.createQuery(hql); query.setParameter("user", 8888); int result = query.executeUpdate(); System.out.println("Rows affected: " + result);
十、INSERT 语句
HQL 只有当记录从一个对象插入到另一个对象时才支持 INSERT INTO 语句。下面是使用 INSERT INTO 语句的简单的语法:
String hql = "INSERT INTO User(Name,salary)" + "SELECT name, salary FROM old_user"; Query query = session.createQuery(hql); int result = query.executeUpdate(); System.out.println("Rows affected: " + result);
十一、聚合方法 HQL 类似于 SQL
支持一系列的聚合方法,它们以同样的方式在 HQL 和 SQL 中工作,以下列出了几种可用方法:
编号 | 方法 | 描述 |
1 | avg(property name) | 属性的平均值 |
2 | count(property name or *) | 属性在结果中出现的次数 |
3 | max(property name) | 属性值的最大值 |
4 | min(property name) | 属性值的最小值 |
5 | sum(property name) | 属性值的总和 |
String hql = "SELECT count(distinct E.firstName) FROM User E"; Query query = session.createQuery(hql); List results = query.list();
十二、分页查询
编号 | 方法&描述 |
1 | Query setFirstResult(int startPosition) 该方法以一个整数表示结果中的第一行,从 0 行开始 |
2 | Query setMaxResults(int maxResult) 这个方法告诉 Hibernate 来检索固定数量,即 maxResults 个对象 |
String hql = "FROM User"; Query query = session.createQuery(hql); query.setFirstResult(1); query.setMaxResults(10); List results = query.list();
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。