Hibernate 操作语言简介说明

Java-框架王 Hibernate 发布时间:2021-07-14 15:53:53 阅读数:2965 1
Hibernate拥有自己的一套操作语言,采用此种语言,可以将对象正确的翻译为sql语言,
对数据表进行相应的操作,
我们将这种语言称之为"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 个对象
例: 取第一页数据,每次取10行数据
String hql = "FROM User";
Query query = session.createQuery(hql);
query.setFirstResult(1);
query.setMaxResults(10);
List results = query.list();
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/Hibernate/202107/492.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者