hibernate hql语句 投影查询的三种方式

投影查询有三种方式:

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();
}

转载于:https://www.cnblogs.com/xusongfeng/p/9165674.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值