HQL语句--select(选择)
2016-09-01 12:51
211 查看
以Object[]类型返回选择的属性:
如果在select子句中只是指定了选择的对象和属性,没有指定返回的数据类型,默认查询结果以对象数组Object[]形式返回。
eg:
控制台:
特:当只查询持久化类的一个属性时,返回的结果就是对象Object,而不是对象数组Object[],那么更改如下:
控制台:
以Lisi集合形式返回查询的结果:
在select子句中使用new list来指定返回查询结果
eg:
控制台:
通过Map返回查询结果:
在select子句中使用new map指定查询结果的返回数据类型。在获取值时,map中的key值是属性在select子句中相应的索引值,它的类型是字符串类型。
map集合获得结果,除了通过序号获得属性信息,还可通过别名获取。
eg:
控制台:
通过自定义类型返回查询结果:
在持久化类中定义相应的构造器,构造器的参数就是我们要选择返回的属性信息。然后在select子句中调用定义的构造器。
在Seller.java持久化类中增加构造器:
测试类SellerTest:
控制台:
持久化类无参构造方法的重要性:
当我们指定了构造器,hibernate框架就会调用我们选择的构造器;而未指定构造器时,hibernate就是调用默认构造器。
distinct关键字:去除查询结果中的重复元素
eg:select distinct sex from Customer c
控制台(结果无重复元素):
如果在select子句中只是指定了选择的对象和属性,没有指定返回的数据类型,默认查询结果以对象数组Object[]形式返回。
eg:
@Test public void testSelectClauseObjectArray(){ //通过select子句指定返回Object[]类型查询结果 //注:不能只指定一个属性,因为返回类型就不是对象数组,而是对象,要将Object[]改为Object String hql="select s.name,s.tel,s.address,s.star from Seller s"; //通过别名来引用持久化类的属性。 Query query =session.createQuery(hql); List<Object[]> list=query.list(); //返回结果是对象数组 for (Object[] objects : list) { System.out.println("name:"+objects[0]); //在对象数组中的位置与选择属性顺序一致 System.out.println("tel:"+objects[1]); System.out.println("address:"+objects[2]); System.out.println("star:"+objects[3]); } }
控制台:
特:当只查询持久化类的一个属性时,返回的结果就是对象Object,而不是对象数组Object[],那么更改如下:
@Test public void testSelectClauseObjectArray(){ //通过select子句指定返回Object[]类型查询结果 //注:只指定一个属性时,返回类型就不是对象数组,而是对象,要将Object[]改为Object String hql="select s.name from Seller s"; //通过别名来引用持久化类的属性。 Query query =session.createQuery(hql); List<Object> list=query.list(); //返回结果是对象 for (Object objects : list) { System.out.println("name:"+objects); //在对象中的位置与选择属性顺序一致 } }
控制台:
以Lisi集合形式返回查询的结果:
在select子句中使用new list来指定返回查询结果
eg:
@Test public void testSelectClauseList(){ //通过select子句指定返回数据类型是List集合 //通过new list来指定返回的数据类型是List集合形式 String hql="select new list(s.name,s.tel,s.address) from Seller s"; Query query=session.createQuery(hql); List<List> lists=query.list() ;//查询结果是List集合形式 for (List list : lists) { System.out.println("name:"+list.get(0)); //索引信息就是在select子句中相应位置信息 System.out.println("tel:"+list.get(1)); System.out.println("address:"+list.get(2)); } }
控制台:
通过Map返回查询结果:
在select子句中使用new map指定查询结果的返回数据类型。在获取值时,map中的key值是属性在select子句中相应的索引值,它的类型是字符串类型。
map集合获得结果,除了通过序号获得属性信息,还可通过别名获取。
eg:
@Test public void testSelectClauseMap(){ //通过select子句指定返回数据类型是map形式 //通过new map来指定返回数据类型是map类型 String hql="select new map(s.name as name,s.tel as tel,s.address as address) from Seller s"; Query query=session.createQuery(hql); List<Map> maps=query.list(); //结果是map形式 for (Map map : maps) { //key值就是属性在select子句中相应的位置信息,key值是字符串类型 //map集合获得结果,除了通过序号获得属性信息,还可通过别名获取 System.out.println("name:"+map.get("0")); System.out.println("tel:"+map.get("1")); System.out.println("address:"+map.get("2")); // System.out.println("name:"+map.get("name")); // System.out.println("tel:"+map.get("tel")); // System.out.println("address:"+map.get("address")); } }
控制台:
通过自定义类型返回查询结果:
在持久化类中定义相应的构造器,构造器的参数就是我们要选择返回的属性信息。然后在select子句中调用定义的构造器。
在Seller.java持久化类中增加构造器:
//定义一个构造器,参数是选择返回的属性信息 public Seller(String name,String tel,String address){ this.name=name; this.tel=tel; this.address=address; }
测试类SellerTest:
@Test public void testSelectClauseSelf(){ //select子句以自定义类型返回查询结果 //使用自定义类型来设置返回的数据类型 String hql="select new Seller(s.name,s.tel,s.address) from Seller s"; Query query=session.createQuery(hql); List<Seller> sellers=query.list(); //查询结果是Seller持久化类型 for (Seller seller : sellers) { System.out.println("name:"+seller.getName()); System.out.println("tel:"+seller.getTel()); System.out.println("address:"+seller.getAddress()); } }
控制台:
持久化类无参构造方法的重要性:
当我们指定了构造器,hibernate框架就会调用我们选择的构造器;而未指定构造器时,hibernate就是调用默认构造器。
distinct关键字:去除查询结果中的重复元素
eg:select distinct sex from Customer c
@Test public void testDistinct(){ //测试distinct关键字 String hql="select distinct c.sex from Customer c"; Query query=session.createQuery(hql); List<Object> list=query.list(); //返回结果是对象 for (Object object : list) { System.out.println(object); } }
控制台(结果无重复元素):
相关文章推荐
- group by和 选择前几个的select语句
- Hibernate的HQL语句的select语句问题
- 在HQL select查询语句中自定义查询结果返回的数据类型
- 使用HQL 语句实现select top N
- join和on语句中select语句选择公共列的区别
- hql语句里 select xx from。。。与 from。。。有何区别?
- Hql的select 语句返回Ilist<object[]>类型,如何转换为映射类型
- hql语句中的select字句和from 字句
- select+case选择语句
- hql select语句构建新对象
- 关于sql视图--定义视图的查询不能包含order by子句,除非在select 语句的选择列表中还有top子句---问题解决
- hql语句 select m.* xxxx是不*号的
- 显示刚刚添加的最后一条数据,access,选择语句,select
- hibernate查询的时间段选择查询的hql语句总结
- Hibernate中HQL使用SELECT语句
- hibernate中的hql语句加select字段与不加的区别
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
- Hypertable执行select语句的基本思路
- 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选C
- ORACLE: SELECT语句里调用函数使用DML语句进行Update/Insert/Delete操作