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();
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

 
			 
                
                
                
               
 
          

