-
HQL对关键字大小写不敏感
查看全部 -
HQL语句面向对象的查询语句,面向持久化对象和属性,大小写敏感
查看全部 -
使用order by子句对查询结果进行排序
升序 asc
降序 desc
"from Commodity order by price asc"
"from Commodity order by seller.id asc,price desc,name asc"
有多个排序条件时,优先级依次降低
查看全部 -
使用Query的uniqueResult方法查询结果是单个对象,但使用时必须确保,查询结果是1个或0个。
查看全部 -
在where和select子句中可以使用四则运算 + - × ÷
查看全部 -
集合运算 set
is [not] empty 集合[不]为空,不包含任何元素
member of 元素属于集合
HQL 对应SQL empty exists member of in "from Order o where o.orderItems is not empty"
查看全部 -
逻辑运算
and (与)、 or(或) 、 not(非)
查看全部 -
字符串模式匹配
like 关键字
通配符 %、_ ( %表示任意个字符 _表示任意一个字符 )
//匹配姓“张”,且名字总共只有2个字的 "from Customer c where c.name like '张_'"
//匹配“北京”,位置不固定 "from Customer c where c.address like '%北京%'"
查看全部 -
where子句中的范围运算
[not] in ( 列表 )
[not] between 值1 and 值2
查看全部 -
where子句中的比较运算符
=、<>、 <、 >、 >=、 <=
null值判断: is [not] null 或 <>null 、=null
查看全部 -
distinct关键字,去除查询结果中多余的重复元素。
"select distinct c.sex from Customer c"
查看全部 -
以自定义类型返回查询结果:
1、在持久类中定义对应参数的构造方法
2、在select语句中使用构造方法
String hql = "select new Seller(s.name as name,s.tel) from Seller s"; Query query = session.createQuery(hql); List<Seller> sellers = query.list(); for (Seller s : sellers) { System.out.println(s); }
注意:此时仍然需要定义无参的构造函数,否则“from Seller”将会失败。
查看全部 -
以Map形式返回查询结果:new map(...)
Map的key是默认查询语句中对应的位置信息,但是String类型。
可以通过别名的方式修改key。
String hql = "select new map(s.name,s.tel) from Seller s"; String hql = "select new map(s.name as name,s.tel) from Seller as s"; Query query = session.createQuery(hql); List<Map> maps = query.list(); for (Map m : maps) { System.out.println(m.get("0")); //System.out.println(m.get("name"));//使用别名 ystem.out.println(m.get("1")); }
查看全部 -
以List形式返回查询结果 : new list(...)
String hql = "select new list(s.name,s.tel) from Seller s";
查询结果:
List<List> list = query.list();
查看全部 -
HQL查询一个持久类中的部分字段:
String hql = "select s.name,s.tel from Seller s";
此时,查询结果为对象数组:
List<Object[]> objs = query.list();
注意:当仅指定一个字段时,返回的是对象而不是对象数组。
查看全部
举报