zoukankan      html  css  js  c++  java
  • 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();
    }
  • 相关阅读:
    VBA中使用计时器的两种方法
    好的关卡离不开优秀的团队
    如何从无到有做一个好关卡?
    性能优化总结
    用超链接提交表单,实现在动态网页的url中隐藏参数
    js 中使用el表达式 关键总结:在js中使用el表达式一定要使用双引号
    js中getBoundingClientRect的作用及兼容方案
    IE10、IE11和Microsoft Edge的Hack
    CSS Hack大全-教你如何区分出IE6-IE10、FireFox、Chrome、Opera
    点击a标签,跳转到iframe中,并在iframe中显示指定的页面
  • 原文地址:https://www.cnblogs.com/xusongfeng/p/9165674.html
Copyright © 2011-2022 走看看