在说说什么是投影查询:查询一个或多个属性,但不全部查询,这就是投影查询投影查询有三种方式: 1.直接查 2.查询返回对象 3.查询返回Map键值对 ======================================================= //投影查询方法1:直接使用select 属性 from 类名的方式查询 public void list1(){ Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession(); //开启事务Transaction tx = session.beginTransaction(); Query query = session.createQuery("select name,title from Guestbook"); List<Object[]> list = query.list();for(Object[] o:list){ System.out.println("姓名:"+o[0]);}tx.commit(); } /** 投影查询方法2 --- 使用select new 类名(属性名...) from 类名的方式,返回实体类* 注意:如何 使用实体类的方式,那么必须在实体类中有这样的构造方法*/ public void list2(){ Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession(); //开启事务Transaction tx = session.beginTransaction(); Query query = session.createQuery("select new Guestbook(id,name,title) from Guestbook"); List<Guestbook> list = query.list(); for(Guestbook gb:list){ System.out.println("编号:"+gb.getId()+",姓名:"+gb.getName()+",标题:"+gb.getTitle()); } tx.commit();} /** 投影查询方法3 --- 使用select new Map(属性名...) from 类名的方式,返回Map集合,通过下标获取属性值* 注意:如何使用实体类的方式,那么必须在实体类中有这样的构造方法*/ public void list3(){ Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession(); //开启事务 Transaction tx = session.beginTransaction(); //在遍历Map是就可以根据编号获取属性值 //Query query = session.createQuery("select new Map(id,name,title) from Guestbook"); //使用属性的别名,在遍历Map是就可以根据名称获取属性值 Query query = session.createQuery("select new Map(gb.id as id,gb.name as name,gb.title as title) from Guestbook gb"); List<Map> list = query.list(); for(Map m:list){ //注意:这里的编号不是Integer类型,而是String类型 System.out.println("编号:"+m.get("id")+",姓名:"+m.get("name")+",标题:"+m.get("title")); } tx.commit(); } |
|