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

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

[java]  view plain copy
  1. /** 
  2.     * <查找list> 
  3.     *  
  4.     * @return 返回页面需要显示的数据 
  5.     */  
  6.    @SuppressWarnings("unchecked")  
  7.    public List<Map<String, String>> findUserDept()  
  8.    {  
  9.        return ht.executeFind(new HibernateCallback()  
  10.        {  
  11.            public Object doInHibernate(Session session)  
  12.                throws HibernateException,  
  13.                    SQLException  
  14.            {  
  15.                String sql =  
  16.                    "SELECT u.username name,u.password p,d.name deptName "  
  17.                        + "FROM usertable u LEFT JOIN depttable d ON u.dept_id=d.id";  
  18.                Query query =  
  19.                    session.createSQLQuery(sql)  
  20.                        .addScalar("name", Hibernate.STRING)  
  21.                        .addScalar("p", Hibernate.STRING)  
  22.                        .addScalar("deptName", Hibernate.STRING)  
  23.                        .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);//返回List<Map>其中map的key就是我们定义的别名  
  24.                return query.list();  
  25.            }  
  26.              
  27.        });  


 ----------------------------------------------------------测试代码-----------------------------------------------------------------------------

      

[java]  view plain copy
  1. List<Map<String, String>> listUserDept = userService.findUserDept();  
  2.       // 循环  
  3.       for (Map<String, String> map : listUserDept)  
  4.       {  
  5.           System.out.println(map.get("name"));//key是我们写sql语句的别名  
  6.           System.out.println(map.get("p"));  
  7.           System.out.println(map.get("deptName"));  
  8.           System.out.println("---------------------------------");  
  9.       }  
  10.   }  
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值