springboot使用mybatis一对多的关联查询问题记录

网友投稿 506 2022-08-31


springboot使用mybatis一对多的关联查询问题记录

springboot使用mybatis一对多的关联查询

由于刚开始写java不久,对sql语句的熟悉度还是不够熟练,虽然现在使用的mybatisPlus比较多,但我始终觉得sql不能忘也不能不用,刚好最近有个需求需要做到关联的查询,时间也算充足,所以用sql来写,于是踩了很久坑,终于跳出来了,小小记录一下。

一对多

# 我这里是一对多查询,一张主表两张副表,最后还要有一张VO表(就是做关联映射用的),主表和副表的实体我就不贴了,以下是VO实体

这是我的controller

@RequestMapping(value = "/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做解释了,感兴趣的朋友可以自己去了解一下,用法是一样的。

SELECT

se.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_day

FROM

statement_entering se

LEFT JOIN cash_car ca on se.id = ca.parent_id

LEFT JOIN subtotal_all sa on se.id = sa.parent_id

以下是需要注意的点(我就是在这里踩了好久的坑)

以下sql用的是左连接语句LEFT JOIN,具体的sql语句我也不解释了,因为要了解的太多了,【尴尬】

这里的这些字段必须要使用别名,为啥?因为几张表的字段相同所以会出现覆盖的问题,比如我副表1ixLyOc和副表2同时存在一个相同字段project_name,如果不给其声明别名,副表2该字段的数据会被副表1的该字段覆盖掉,原理我也解释不清楚,哈哈!!

对应的映射字段要使用别名,上图

线划的丑了些,将就吧!

看下最终获取到的数据结构

完美,理想中的效果。。。

至于最终效果图为啥这么多null,不用怀疑,这些是我没有写对应的映射


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【Python小试】判断一条序列GC含量高低
下一篇:【Python小试】将核酸序列翻译成氨基酸序列(碱基序列翻译成氨基酸)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~