文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

springboot怎样使用mybatis一对多的关联查询问题

2023-06-29 00:39

关注

今天给大家介绍一下springboot怎样使用mybatis一对多的关联查询问题。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。

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

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

一对多

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

springboot怎样使用mybatis一对多的关联查询问题

这是我的controller

@RequestMapping(value = "/queryChartAll", method = RequestMethod.GET)public R<?> queryChartAll(){    List<StatementEnteringVO> statementEnteringVO = statementEnteringMapper.queruMapperPage();    if(statementEnteringVO != null){        return R.data(statementEnteringVO);    }else{        return R.fail(ResultCode.ERROR);    }}

mapper

public interface StatementEnteringMapper extends BaseMapper<StatementEntering> {    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>    <select id="queruMapperPage" resultMap="queryChartAllTwo">        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                <!--        条件可根据自己的需求增加啦-->    </select></mapper>

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

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

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

springboot怎样使用mybatis一对多的关联查询问题

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

springboot怎样使用mybatis一对多的关联查询问题

线划的丑了些,将就吧!

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

springboot怎样使用mybatis一对多的关联查询问题

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

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

springboot是什么

springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。

以上就是springboot怎样使用mybatis一对多的关联查询问题的全部内容了,更多与springboot怎样使用mybatis一对多的关联查询问题相关的内容可以搜索编程网之前的文章或者浏览下面的文章进行学习哈!相信小编会给大家增添更多知识,希望大家能够支持一下编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯