多表查询封装

表1

表2

表1中的"category_id"对应表2中的主键id

前端要求根据表1中的"category_id"查询出表2中的"name"并返回到页面

  • 第一次写的时候是做了两次查询,查了两个表封装对象放到一个List里面,这样写很不合理而且很丑,返回的是两个表的所有数据
  • 发现不合理之后,就用了左连接查询,查询结果
    这样就要在表1的实体类里面加一个字段"name"并查询后封装进去

然后就是在mapper.xml里面做对应的封装

得到最后要的结果

============================================================

2019.4.15更新

  • 这次项目查询需要联4张表查询 查询的sql很快就写出来了,使用内连接
SELECT
	p1.id,p1.brand_id,p1.name "商品名称",
	p2.NAME "商品分类二级",
	p4.NAME "商品分类一级",
	p3.vertify_man "审核人",
	p3.STATUS "审核状态",
	p3.detail "审核详情"
FROM
	pms_product p1,
	pms_product_category p2,
	pms_product_vertify_record p3,
	pms_product_category p4 
WHERE
	p1.product_category_id = p2.id 
	AND p1.id = p3.id 
	AND p2.parent_id = p4.id
	AND p1.id = 1;
复制代码

查询结果

在MyBatis中用resultMap自定义结果集,封装这四个表的查询结果

因为另外表的字段不多而且是基于商品表(pms_product)加上的,所以要在商品表的实体类上加上对应的字段,上面就是在商品类里面直接加了,这样等于修改原来的实体类,个人感觉不是很好,于是就另外写了一个类继继承商品表的实体类

这样就可以在PmsProductDetails类里面写其他表对应的字段也不会对原来的商品表做修改

mapper.xml

  • 不过这个还是今天才解决的,上周六一天都没搞定,还是自己太笨了 开始是这样写的

  • 然后这样查出来的都是以第一个name查出的值封装的

  • 出现这个问题后,一直想是不是查询方法不合适造成的,就想着用子查询,由于没写出来子查询就没弄
  • 周一上班发现可以用别名区分啊,哈哈

  • 来看最后的结果

转载于:https://juejin.im/post/5caab10e6fb9a05e345beb03

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值