Hibernate使用sql语句实现多表关联查询

/** 
    * <查找list> 
    *  
    * @return 返回页面需要显示的数据 
    */  
   @SuppressWarnings("unchecked")  
   public List<Map<String, String>> findUserDept()  
   {  
       return ht.executeFind(new HibernateCallback()  
       {  
           public Object doInHibernate(Session session)  
               throws HibernateException,  
                   SQLException  
           {  
               String sql =  
                   "SELECT u.username name,u.password p,d.name deptName "  
                       + "FROM usertable u LEFT JOIN depttable d ON u.dept_id=d.id";  
               Query query =  
                   session.createSQLQuery(sql)  
                       .addScalar("name", Hibernate.STRING)  
                       .addScalar("p", Hibernate.STRING)  
                       .addScalar("deptName", Hibernate.STRING)  
                       .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);//返回List<Map>其中map的key就是我们定义的别名  
               return query.list();  
           }  
             
       });

测试代码

List<Map<String, String>> listUserDept = userService.findUserDept();  
      // 循环  
      for (Map<String, String> map : listUserDept)  
      {  
          System.out.println(map.get("name"));//key是我们写sql语句的别名  
          System.out.println(map.get("p"));  
          System.out.println(map.get("deptName"));  
          System.out.println("---------------------------------");  
      }  
  }  

 

转载于:https://www.cnblogs.com/andy-alone/p/9077298.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值