首页 > 作文

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

更新时间:2023-04-04 18:58:24 阅读: 评论:0

二字网名干净springboot使用帮妈妈做家务作文mybatis一对多的关联查询

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

一对多

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

这是我的controller

@requestmapping(value = "/querychartall", method = requestmethod.get)public r<?> querychartall(){    list<statemententeringvo> statemententeringvo = statemententeringmapper.querumapperpage();    if(statemententeringvo != null){        return r.data(statemententeringvo);    }el{        return r.fail(resultcode.error);    }}

mapper

public interface statemententeringmapper extends bamapper<s怎么追回前女友tatemententering>北伐战争电影 {    list<statemententeringvo> querumapperpage();}

mapper.xml(注意了,最难受也是最坑的)

为了展示方便,我贴少点的字段,不然老长的代码看球不明白,再注一下:一对多使用collection,一对一使用association,文章主讲一对多的。所以也不对association做解释了,感兴趣的朋友可以自己去了解一下,用法是一样的。

<?xml version="1.0" encoding="utf-8"?><!doctype mapper public "-//mybatis.org//dtd mapper 3.0//en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.ld.ldstat.mapper.statemententeringmapper">    <resultmap id="querychartalltwo" type="com.ld.ldstat.vo.statemententeringvo">        <id property="id" jdbctype="bigint" column="sid"></id>        <result property="thedate" jdbctype="date" column="the_date"></result>        <result property="deptname" jdbctype="varchar" column="dept_name"></result>        <result property="deptid" jdbctype="bigint" column="dept_id"></result>                <!--这里是对应vo实体的表1实体-->        <collection property="cashcar" javatype="java.util.list" oftype="com.ld.ldstat.entity.cashcar">            <id property="id" jdbctype="bigint" column="cid"></id>            <result property="parentid" jdbctype="bigint" column="c_parent_id"/>            <result property="projectname" jdbctype="varchar" column="c_project_name"/>            <result property="ninetywithin" jdbctype="integer" column="ninety_within"/>            <result property="ninetyexcept" jdbctype="integer" column="ninety_except"/>            <result property="cashcar" jdbctype="integer" column="cash_car"/>        </collection>                <!--这里是对应vo实体的表2实体-->        <collection property="subtotalall" oftype="com.ld.ldstat.entity.subtotalall">            <id property="id" jdbctype="bigint" column="aid"></id>            <result property="parentid" jdbctype="bigint" column="a_parent_id"/>            <result property="projectname" jdbctype="varchar" column="a_project_name"/>            <result property="subtotaltype" jdbctype="integer" column="subtotal_type"/>     穿井得人阅读答案       <result property="task" jdbctype="integer" column="task"/>            <result property="theday" jdbctype="integer" column="the_day"/>        </collection>    </resultmap>    <lect id="querumapperpage" resultmap="querychartalltwo">        lect        .id sid,.the_date,.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         left join cash_car ca on .id = ca.parent_id        left join subtotal_all sa on .id = sa.parent_id                <!--        条件可根据自己的需求增加啦-->    </lect></mapper>

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

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

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

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

线划的丑了些,将就吧!

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

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

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

到此这篇关于springboot使用mybatis一对多的关联查询的文章就介绍到这了,更多相关springboot使用mybatis关联查询内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 18:58:22,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/4be5b97f02eaa38ceefdcf4d9b2c1ef8.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:springboot使用mybatis一对多的关联查询问题记录.doc

本文 PDF 下载地址:springboot使用mybatis一对多的关联查询问题记录.pdf

下一篇:返回列表
标签:字段   实体   别名   我也
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图