String hql = "select new list(s.name,s.tel,s.address) from Seller s";
for(List list:list){
system.out.println("name:"+list.get(0));
system.out.println("tel:"+list.get(1));
system.out.println("address:"+list.get(2));
}
String hql = "select new map(s.name,s.tel,s.address) from Seller s";
List<Map> maps = query.list();
for(Map map : maps){
system.out.println("name:"+list.get("0"));
system.out.println("tel:"+list.get("1"));
system.out.println("address:"+list.get("2"));
}
String hql = "select new map(s.name as name,s.tel as tel,s.address as addr) from Seller s";
List<Map> maps = query.list();
for(Map map : maps){
system.out.println("name:"+list.get("name"));
system.out.println("tel:"+list.get("tel"));
system.out.println("address:"+list.get("addr"));
}
自定义返回的话,首先在model里面创建需要返回的model接收。
model类里面添加又擦的构造器。
public seller(String name,String tel,String address){
this.name = name;
this.tel = tel;
this.address = address;
}
public seller(){}
注意:如果创建自定义的构造器后,我们必须创建默认的无参构造器。
String hql = "select new seller(s.name,s.tel,s.address) from Seller s";
List<seller> sellers = query.list();
for(Seller seller:sellers){
system.out.println("name:" +seller.getName());
system.out.println("tel:" +seller.getTel());
}
String hql = "select distinct c.sex from Customer c";
Query query = session.createQery(hql);
List<Object> list = query.list();
for(Object obj:list){
system.out.println(obj);
}
比较运算
String hql = "from Commodity c where c.price>400";
String hql = "from Commodity c where c.description is null"; //查询的结果为空也可以写成c.description = null;
String hql = "from Commodity c where c.description is not null"; //查询的结果为空也可以写成c.description <> null;
范围运算:判断属性值是否在给定的条件范围之内
[not]in(列表):在候选列表存在,true否则false;
[not]between 值1 and 值2:两个值在中间返回true 否则返回false;
String hql = "from Customer c where c.age in(20,40)"; //查询的结果是20到40岁之间的值
String hql = "from Customer c where c.age between 20 and 40";
字符串模式匹配:
1:like关键字
2:通配符 % 、_;//%代表多个字符,_代表一个字符
String hql = "from Customer c where c.name like '张_' ";//匹配一个字符,输出姓张,并且只有两个字
String hql = "from Customer c where c.name like '%北京%' “;//只要带有北京两个字的,都匹配出来。
逻辑运算
1:and(逻辑与)、or(逻辑或)
2:not(逻辑非)
逻辑非:取反
逻辑与:只有两个值都是true的时候最后的值才是true;否则都是false;
逻辑或:只有两个值都是false的时候最后的值才是false;否则是true;
String hql = "from Commodity c where c.price between 100 and 500 and c.category like '%电脑%'";
String hql = "from Commodity c where c.price between 100 and 500 or c.category like '%电脑%'";
集合运算
is[not] empty:集合[不]为空,不包含任何元素 empty-->exists
member of 元素属性集合member of--->in
String hql = "from Order o where o.orderItems is not empty";
四则运算
1:hql语句中也可以使用+ - * /四则运算付。
2:四则运算可以在where子句和select子句中使用。
for(List list:list){
system.out.println("name:"+list.get(0));
system.out.println("tel:"+list.get(1));
system.out.println("address:"+list.get(2));
}
String hql = "select new map(s.name,s.tel,s.address) from Seller s";
List<Map> maps = query.list();
for(Map map : maps){
system.out.println("name:"+list.get("0"));
system.out.println("tel:"+list.get("1"));
system.out.println("address:"+list.get("2"));
}
String hql = "select new map(s.name as name,s.tel as tel,s.address as addr) from Seller s";
List<Map> maps = query.list();
for(Map map : maps){
system.out.println("name:"+list.get("name"));
system.out.println("tel:"+list.get("tel"));
system.out.println("address:"+list.get("addr"));
}
自定义返回的话,首先在model里面创建需要返回的model接收。
model类里面添加又擦的构造器。
public seller(String name,String tel,String address){
this.name = name;
this.tel = tel;
this.address = address;
}
public seller(){}
注意:如果创建自定义的构造器后,我们必须创建默认的无参构造器。
String hql = "select new seller(s.name,s.tel,s.address) from Seller s";
List<seller> sellers = query.list();
for(Seller seller:sellers){
system.out.println("name:" +seller.getName());
system.out.println("tel:" +seller.getTel());
}
String hql = "select distinct c.sex from Customer c";
Query query = session.createQery(hql);
List<Object> list = query.list();
for(Object obj:list){
system.out.println(obj);
}
比较运算
String hql = "from Commodity c where c.price>400";
String hql = "from Commodity c where c.description is null"; //查询的结果为空也可以写成c.description = null;
String hql = "from Commodity c where c.description is not null"; //查询的结果为空也可以写成c.description <> null;
范围运算:判断属性值是否在给定的条件范围之内
[not]in(列表):在候选列表存在,true否则false;
[not]between 值1 and 值2:两个值在中间返回true 否则返回false;
String hql = "from Customer c where c.age in(20,40)"; //查询的结果是20到40岁之间的值
String hql = "from Customer c where c.age between 20 and 40";
字符串模式匹配:
1:like关键字
2:通配符 % 、_;//%代表多个字符,_代表一个字符
String hql = "from Customer c where c.name like '张_' ";//匹配一个字符,输出姓张,并且只有两个字
String hql = "from Customer c where c.name like '%北京%' “;//只要带有北京两个字的,都匹配出来。
逻辑运算
1:and(逻辑与)、or(逻辑或)
2:not(逻辑非)
逻辑非:取反
逻辑与:只有两个值都是true的时候最后的值才是true;否则都是false;
逻辑或:只有两个值都是false的时候最后的值才是false;否则是true;
String hql = "from Commodity c where c.price between 100 and 500 and c.category like '%电脑%'";
String hql = "from Commodity c where c.price between 100 and 500 or c.category like '%电脑%'";
集合运算
is[not] empty:集合[不]为空,不包含任何元素 empty-->exists
member of 元素属性集合member of--->in
String hql = "from Order o where o.orderItems is not empty";
四则运算
1:hql语句中也可以使用+ - * /四则运算付。
2:四则运算可以在where子句和select子句中使用。