Query接口及HQL查询语言的使用.docxVIP

  • 1
  • 0
  • 约1.17万字
  • 约 9页
  • 2018-10-27 发布于山东
  • 举报
Query接口及HQL查询语言的使用.docx

在我们使用load,get等方法时候,只能根据主键来加载,那么有其它更高要求的时候就不行了,所以我们可以使用Query, Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); Query query = session.createQuery(from User); //这里的User就是类,这种查询语句叫作hql查询语句 query.setFirstResult(2); //从第二条记录开始 query.setMaxResults(2); //查询2条记录 List userList = query.list(); for (Iterator iter=userList.iterator(); iter.hasNext();) { User user = (User)iter.next(); System.out.println(user.getId()); System.out.println(user.getName()); } session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } 注意我们在使用session的get方法得到单个实例的时候经常是这样: client = (Client)session.get(Client.class, new Integer(id)); 后面一定是对象,不能直接传id,要不然MyEclipse就会出现问题,但是这个好像在不同版本下是不一样的,有的版本下不会出现问题,会自动转换。 HQL查询语言: 一、简单属性查询: 1、单一属性查询: //返回结果集属性列表,元素类型和实体类中相应的属性类型一致 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); } 2、多个属性查询: //查询多个属性,其集合元素是对象数组 //数组元素的类型和对应的属性在实体类中的类型一致 //数组的长度取决与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]); } 3、返回实体对象:(注意实体类要有相应构造方法) //如果认为返回数组不够对象化,可以采用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()); } 4、使用别名查询: List students = session.createQuery(select s.id, from Student s).list(); for (Iterator iter=students.iterator(); iter.hasNext();) { Object[] obj = (Object[])iter.next(); System.out.println(obj[0] + , + obj[1]); } 5、使用带as的别名查询: List students = session.createQuery(select s.id, fro

文档评论(0)

1亿VIP精品文档

相关文档