hibernate如何同时查询满足条件的两个表

hibernate如何同时查询满足条件的两个表 

场景如下

现在有两个表:商品表和购物车表,购物车里有很多商品

简要的数据库展示如下:

商品表:

shopid    shopname  。。。。。

1            a商品

2            b商品

3            c商品

购物车表:

cartid  userid  shopid

1        1        1

2        2        2

3        2        1


以上信息表示了用户id为2的用户有两个商品 ,商品id是2和1

那么我们如何通过用户id2,来查询他的购物车信息呢,就是商品2和1

注意我们的商品表和购物车表还有其他字段,就不列出了,其他字段也很重要,就是说我们需要获得两个表

商品表和对应的购物车表

比如商品id为2,和cartid为2是一起的

下面我们用hibernate来实现

首先是简单的饿hql代码,他可以实现连接查询,查询出两个表的信息


String hql = "select cs,sif from cart cs,shop sif where cs.userid=:userid and sif.shopid = cs.shopid";

这局hql代码的意思,查询购物车里的用户id为userid,并且同时查询购物车的商品id和商品表里的商品id一致

下面开始查询

String[] params = {"userid"};
Object[] values = {userid};
List<?> list = hibernateTemplate.findByNamedParam(hql, params, values);
假设list有数据,也就是说数据库中有这样的数据存在


那么list里面存放的就是一个Object数组

也就是说list.get(0)   是一个Object数组

而Object[0]就是查询代码中from后面的第一个对象  cart

而Object[1]就是查询代码中from后面的第二个对象  shop


这样我们就获得了两个实体


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img