select返回形式的选择
形式一:
String hql = "select s.name,s.tel,s.address from Seller s"
Query query = session.createQuery(hql)
List<Object[]> list = query.list()
for (Object[] objs : list) {
System.out.println("name :"+objs[0])
System.out.println("tel :"+objs[1])
System.out.println("address :"+objs[2])
}
String hql = "select s.name from Seller s"
Query query = session.createQuery(hql)
List<Object[]> list = query.list()
for (Object[] objs : list) {
System.out.println("name :"+objs[0])
}
形式二:
String hql = "select new list(s.name)from Seller s";
Query query = session.createQuery(hql);
List<List> lists = query.list();
for (List list : lists) {
System.out.println(list.get(0));
}
形式三:
//如果没有给属性起别名的话,要用map.get("0")
String hql = "select new map(s.name as name,s.tel as tel) from Seller s"
Query query = session.createQuery(hql)
List<Map> maps = query.list()
for (Map map : maps) {
System.out.println(map.get("name"))
System.out.println(map.get("tel"))
System.out.println(map.get("address"))
System.out.println(map.get("star"))
System.out.println("--------------------")
}
形式四:
//要查几个属性,就建立包含几个属性的构造器
String hql = "select new Seller(s.name,s.tel,s.address) from Seller s"
Query query = session.createQuery(hql)
List<Seller> sellers = query.list()
for (Seller seller : sellers) {
System.out.println(seller.getName())
System.out.println(seller.getTel())
System.out.println(seller.getAddress())
//打印不在hql语句中的,得到null
System.out.println(seller.getWebsite())
System.out.println("------------------------")
}
distinct关键字:
//在select语句中加上distinct关键字,使查询结果不重复
String hql = "select distinct c.sex from Customer c";