HQL是Hbernate官方推荐使用的查询语句
HQL的语句形式:select...from...where..group by..having...order by...
HQL对关键字大小写不敏感,习惯上小小小写,对JAVA等属性名称大小写敏感
---Query的使用----
例:String hql="from Sellor";//Sellor是一个类名
Query query=session.createQuery(hql);
List<Sellor> sellors=query.list();
for循环查看数据
别名的使用
String hql=“from Sellor as sellor”
或者 String hql=“from Sellor sellor”
-----------select语句
1以Object[]形式返回选择的属性
默认情况下是这种形式
String hql="select s.name, s.tel from Seller s";
Query query=session.createQuery(hql);
List<Object[]> lists=query.list();
for(Object[] objs:lists){ syso(objs[0])}
注意:如果select后面只有一个属性,将返回object类型
2以List形式返回选择的属性
String hql="select new list(s.name, s.tel) from Seller s";
Query query=session.createQuery(hql);
List<list> lists=query.list();
for(List list:lists){ syso(list.get(0))}
3以map形式返回选择的属性
String hql="select new Map(s.name, s.tel) from Seller s";
Query query=session.createQuery(hql);
List<Map> maps=query.list();
for(Map list:maps){ syso(map.get("name"))}
4以自定义类型返回选择的属性(选哪几个属性在类里面建包含这几个属性的构造器)
String hql="select new Sellor(s.name, s.tel) from Seller s";
Query query=session.createQuery(hql);
List<Seller> sellers=query.list();
for(Seller seller:sellers){ syso( seller.getName(); )}
5以获取独特的结果-distinct关键字
使用distinct关键字去除查询结果中的重复元素
String hql="select distinct s.xingbie from Seller s";
----------where 限制语句
String hql="from Commodity c where c.price>40";
String hql="from Commodity c where c.price is null";
String hql="from Commodity c where c.price in (20,40)";
String hql="from Commodity c where c.price between 20 and 40";
字符串匹配
1 like 关键字
2 % 任意个字符
_ 一个字符
查询单个对象
String hql="from Commodity c where c.price =30";
order by关键字
String hql="from Commodity c order by price asc";