Hibernate学习28 -- Hibernate查询语言(HQL)2 -- 简单属性查询

简单属性查询:

* 单一属性查询,返回结果集属性列表,元素类型和实体类中相应的属性类型一致

* 多个属性查询,返回的集合元素是对象数组,数组元素的类型和对应的属性在实体类中的类型一致

  数组的长度取决与select中属性的个数

* 如果认为返回数组不够对象化,可以采用hql动态实例化Student对象。

例子代码如下:

/**

 * 简单属性查询

 * @author Administrator

 */

public class SimplePropertyQueryTest extends TestCase {

   

    /**

     * 单一属性查询

     */

    public void testQuery1() {

       Session session = null;

       try {

           session = HibernateUtils.getSession();

           session.beginTransaction();

          

           //返回结果集属性列表,元素类型和实体类中相应的属性类型一致

           List students = session.createQuery

("select name from Student").list();

           for (Iterator iter=students.iterator(); iter.hasNext();)

{

              String name = (String)iter.next();

              System.out.println(name);

           }

           session.getTransaction().commit();

       }catch(Exception e) {

           e.printStackTrace();

           session.getTransaction().rollback();

       }finally {

           HibernateUtils.closeSession(session);

       }

    }

    /**

     * 多个属性查询

     */

    public void testQuery2() {

       Session session = null;

       try {

           session = HibernateUtils.getSession();

           session.beginTransaction();       

           //查询多个属性,其集合元素是对象数组

           //数组元素的类型和对应的属性在实体类中的类型一致

           //数组的长度取决与select中属性的个数

           List students = session.createQuery

("select id, name from Student").list();

           for (Iterator iter=students.iterator(); iter.hasNext();)

{

              Object[] obj = (Object[])iter.next();

              System.out.println(obj[0] + "," + obj[1]);

           }

           session.getTransaction().commit();

       }catch(Exception e) {

           e.printStackTrace();

           session.getTransaction().rollback();

       }finally {

           HibernateUtils.closeSession(session);

       }

    }

    /**

     * 多个属性查询

     */

    public void testQuery3() {

       Session session = null;

       try {

           session = HibernateUtils.getSession();

           session.beginTransaction();

          

           //查询多个属性,其集合元素是List

           //数组元素的类型和对应的属性在实体类中的类型一致

           //List的长度取决与select中属性的个数

           List students = session.createQuery

("select new list(id, name) from Student").list();

           for (Iterator iter=students.iterator(); iter.hasNext();) {

              List obj = (List)iter.next();

              System.out.println(obj.get(0) + "," + obj.get(1));

           }

           session.getTransaction().commit();

       }catch(Exception e) {

           e.printStackTrace();

           session.getTransaction().rollback();

       }finally {

           HibernateUtils.closeSession(session);

       }

    }

    /**

     * 返回Student实体对象

     */

    public void testQuery4() {

       Session session = null;

       try {

           session = HibernateUtils.getSession();

           session.beginTransaction();       

           //如果认为返回数组不够对象化,可以采用hql动态实例化Student对象

           //此时list中为Student对象集合

           List students = session.createQuery

("select new Student(id, name) from Student").list();

           for (Iterator iter=students.iterator(); iter.hasNext();)

{

              Student student = (Student)iter.next();

              System.out.println(student.getId() + "," +

student.getName());

           }

           session.getTransaction().commit();

       }catch(Exception e) {

           e.printStackTrace();

           session.getTransaction().rollback();

       }finally {

           HibernateUtils.closeSession(session);

       }

    }

    /**

     * 使用别名

     */

    public void testQuery5() {

       Session session = null;

       try {

           session = HibernateUtils.getSession();

           session.beginTransaction();       

           //可以使用别名

           List students = session.createQuery

("select s.id, s.name from Student s").list();

           for (Iterator iter=students.iterator(); iter.hasNext();)

{

              Object[] obj = (Object[])iter.next();

              System.out.println(obj[0] + "," + obj[1]);

           }

           session.getTransaction().commit();

       }catch(Exception e) {

           e.printStackTrace();

           session.getTransaction().rollback();

       }finally {

           HibernateUtils.closeSession(session);

       }

    }

    /**

     * 使用别名

     */

    public void testQuery6() {

       Session session = null;

       try {

           session = HibernateUtils.getSession();

           session.beginTransaction();

          

           //可以使用as命名别名

           List students = session.createQuery

("select s.id, s.name from Student as s").list();

           for (Iterator iter=students.iterator(); iter.hasNext();) {

              Object[] obj = (Object[])iter.next();

              System.out.println(obj[0] + "," + obj[1]);

           }

           session.getTransaction().commit();

       }catch(Exception e) {

           e.printStackTrace();

           session.getTransaction().rollback();

       }finally {

           HibernateUtils.closeSession(session);

       }

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值