使用select指定检索数据以Object[]方式返回查询结果(使用select子句进行查询,可以减少无用的数据传输量)
1、如果select子句中只是指定了查询的对象和属性,但是没有指定返回的数据类型,默认的查询结果以Object[]形式返回。
通过别名引用持久化类中属性的信息,返回指定属性的对象。
案例:通过select子句指定返回对象数组类型的查询结果,首先定义一个from子句(没有使用select子句),这样查询的是所有Seller持久化类的实例。

假设查询结果是供一个列表来使用的,列表只需要商家的名称、电话、地址、商家的星级,如果没有使用select子句,该查询的结果是商家所有字段的信息,包括了其它不需要的数据信息,这样就增加了无用的数据传输量,特别是表中的数据非常庞大时,会非常影响程序的性能,这时就需要使用select子句返回只需要的属性信息来提高程序的运行效率,这里可以通过别名来引用持久化类中的相应属性信息。
查询结果:
特殊情况注意:当使用select语句只查询对象的一个属性时,返回的数据类型就不是对象数组,而是对象Object。
select子句中不是一定使用别名来访问对象的属性,实际应用开发中,from子句中通常不会查询一个目标实体,如果多个实体目标中包含有同一个属性,使用别名可以区分,排除错误的产生。

HQL查询一个持久类中的部分字段:
String hql = "select s.name,s.tel from Seller s";
此时,查询结果为对象数组:
List<Object[]> objs = query.list();
注意:当仅指定一个字段时,返回的是对象而不是对象数组。
如果在select子句中,我们只查询一个属性的话,返回数据类型就不是对象数组,而是对象类型
以Object[]形式返回
选择出自己需要的字段,返回回来的为Object
hql-select字段返回object[]
hql-当只查询一个字段的时候,返回的是object类型,而不是数组
以Object[]形式返回选择的属性 1.select子句中未指定返回数据类型,默认为Object[] HQL的select查询语句中,如果指定了多个查询字段,则返回的是一个Object[]数组;如果只指定了一个查询字段,则返回的是一个Object对象。 e.g. public void testSelect(){ String hql="select s.name,s.tel,s.address from Seller s"; Query query=session.createQuery(hql); List<Object[]> lists=query.list(); for (Object[] list : lists) { System.out.println("name:"+list[0]); System.out.println("tel:"+list[1]); System.out.println("address"+list[2]); } } //如果是单个查询字段的话就只需要把上面的Object[]中的[]去掉,打印输出时不需要指明下标