HQL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HQL相关的知识,希望对你有一定的参考价值。
1. hql是面向对象的查询语言,映射配置的持久化类及其属性;
2.select from where group by having order by
3. 对java类与属性与大小写敏感, 对关键字不区分大小写
准备查询
1.org.hibernate.Query接口:
Query接口定义有执行查询的方法
方法链编程风格,动态设置
(1)Query实例创建:Session的createQuery方法创建Query实例;
createQuery(hql) : Strig hql=" from 类名 ";
Query query=session.createQuery(hql);
query.list();
(2)执行查询:Query接口的list()方法执行HQL查询,
查询返回为java.util.List集合,符合条件的对象。
2.from子句简介及简单案例实现:
Strig hql=" from 类名 ";(类名不需要使用全限定名:由于auto-import自动引入缺省情况)
Query query=session.createQuery(hql);
query.list();
别名的使用:
Strig hql=" from 类名 as 别名";(可以省略as关键字)
3.select字句:
(1):select 字句未指定返回类型,默认为object[];只有一个熟悉时,返回object对象
(2):通过List返回查询结果,String hql="select new list(s.name,s.tel) from Seller s";
(3):以Map形式返回:String hql="select new list(s.name,s.tel) from Seller s"; map.get("0")-可以看到key为字符串形式
以别名形式:String hql="select new map(s.name as name,s.tel as tel) from Seller s"; map.get("name")-可以看到key为字符串形式
(4):自定义类型返回查询结果: 首先持久化类中定义对应的构造器;然后select字句中调用定义好的构造器
如添加构造器: public Seller(String name,String del){
this.name=name;
this.del=del;
}
String hql="select new Seller(s.name,s.del) from Seller s";
(5)午餐构造器的必要性;
(6)distinct 去重 String hql="select distinct s.sex from Seller s";
以上是关于HQL的主要内容,如果未能解决你的问题,请参考以下文章