springboot使用mybatis一对多的关联查询问题记录
springboot使用mybatis一对多的关联查询
由于刚开始写java不久,对sql语句的熟悉度还是不够熟练,虽然现在使用的mybatisPlus比较多,但我始终觉得sql不能忘也不能不用,刚好最近有个需求需要做到关联的查询,时间也算充足,所以用sql来写,于是踩了很久坑,终于跳出来了,小小记录一下。
一对多
【springboot使用mybatis一对多的关联查询问题记录】# 我这里是一对多查询,一张主表两张副表,最后还要有一张VO表(就是做关联映射用的),主表和副表的实体我就不贴了,以下是VO实体
文章图片
这是我的controller
@RequestMapping(value = "https://www.it610.com/queryChartAll", method = RequestMethod.GET)public R> queryChartAll(){List statementEnteringVO = statementEnteringMapper.queruMapperPage(); if(statementEnteringVO != null){return R.data(statementEnteringVO); }else{return R.fail(ResultCode.ERROR); }}
mapper
public interface StatementEnteringMapper extends BaseMapper {List queruMapperPage(); }
mapper.xml(注意了,最难受也是最坑的)
为了展示方便,我贴少点的字段,不然老长的代码看球不明白,再注一下:一对多使用
collection
,一对一使用association
,文章主讲一对多的。所以也不对association
做解释了,感兴趣的朋友可以自己去了解一下,用法是一样的。SELECTse.id sid,se.the_date,se.dept_name,ca.id cid,ca.project_name c_project_name,ca.parent_id c_parent_id,ca.ninety_Within,ca.ninety_except,ca.cash_car,sa.id aid,sa.project_name a_project_name,sa.parent_id a_parent_id,sa.task,sa.the_dayFROMstatement_entering seLEFT JOIN cash_car ca on se.id = ca.parent_idLEFT JOIN subtotal_all sa on se.id = sa.parent_id
以下是需要注意的点(我就是在这里踩了好久的坑)
以下sql用的是左连接语句
LEFT JOIN
,具体的sql语句我也不解释了,因为要了解的太多了,【尴尬】这里的这些字段必须要使用别名,为啥?因为几张表的字段相同所以会出现覆盖的问题,比如我副表1和副表2同时存在一个相同字段
project_name
,如果不给其声明别名,副表2该字段的数据会被副表1的该字段覆盖掉,原理我也解释不清楚,哈哈!!文章图片
对应的映射字段要使用别名,上图
文章图片
线划的丑了些,将就吧!
看下最终获取到的数据结构
文章图片
完美,理想中的效果。。。
至于最终效果图为啥这么多
null
,不用怀疑,这些是我没有写对应的映射到此这篇关于springboot使用mybatis一对多的关联查询的文章就介绍到这了,更多相关springboot使用mybatis关联查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- IDEA|IDEA 的基本介绍使用及断点调试技巧
- 使用|使用 AHK 在 VS Code 中根据上下文自动切换输入法状态
- 源码|第13期在线音乐网站前后分离springboot整合vue
- 杂谈|eclipse使用小技巧
- 使用APICloud开发物流仓储app项目实践
- SpringBoot+Redis实现布隆过滤器的示例代码
- MyBatis的SUM映射问题及解决
- SpringBoot解析yml全流程详解
- python常用内置模块你了解吗
- java|java springboot的概述、特点与构建介绍