首页 > 其他分享 >SpringBoot+Mybatis三级查询

SpringBoot+Mybatis三级查询

时间:2023-09-13 10:33:58浏览次数:40  
标签:章节 视频 SpringBoot boot 查询 video Mybatis id

一、概述

  现有一个需求:查询视频详情。对应三张表,视频表、章节列表、集列表。一个视频对应多个章节,一个章节对应多集视频。请根据视频id查询视频详情,并把视频的章节列表,章节中的集列表都带出来。

  SpringBoot和MyBatis-plus说明:

 <!--根模块继承了SpringBoot,子模块也跟着继承了SpringBoot-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.14</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
   <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1</version>
        </dependency>

  注意:我不晓得别人查询怎样,我这边用这个版本mapper.xml中collection嵌套会出现属性识别不出来的问题。我改用了多个resultMap嵌套查询

二、示例(红色地方标注红的是主要的地方)

<!--    根据视频的id获取视频的详情(章节+章节中的集)-->
    <sql id="getVideoDetailById_sql_id">
        v.id,v.title,v.summary,v.cover_img,v.price,v.point,
        c.id as cid,c.title as ctitle,c.video_id as c_video_id,
        e.id as eid,e.title as etitle,e.num,e.play_url,e.free,e.video_id as e_video_id
    </sql>
    <resultMap id="getVideoDetailByIdMap" type="com.tony.cursor.entity.Video">
        <id property="id" column="id"/>
        <result property="title" column="title"/>
        <result property="summary" column="summary"/>
        <result property="coverImg" column="cover_img"/>
        <result property="price" column="price"/>
        <result property="point" column="point"/>
        <collection property="chapters" ofType="com.tony.cursor.entity.Chapter"
                    resultMap="getVideoDetailByIdMap_childMap"/>
    </resultMap>
    <resultMap id="getVideoDetailByIdMap_childMap" type="com.tony.cursor.entity.Chapter">
        <id property="id" column="cid"/>
        <result property="title" column="ctitle"/>
        <result property="videoId" column="c_video_id"/>
        <collection property="episodes" ofType="com.tony.cursor.entity.Episode">
            <id property="id" column="eid"/>
            <result property="title" column="etitle"/>
            <result property="num" column="num"/>
            <result property="playUrl" column="play_url"/>
            <result property="free" column="free"/>
            <result property="videoId" column="e_video_id"/>
        </collection>
    </resultMap>
    <select id="getVideoDetailById" resultMap="getVideoDetailByIdMap">
        select
        <include refid="getVideoDetailById_sql_id"/>
        from video v left join chapter c on v.id=c.video_id
        left join episode e on c.video_id=e.video_id where v.id=#{id}
    </select>

 

标签:章节,视频,SpringBoot,boot,查询,video,Mybatis,id
From: https://www.cnblogs.com/tony-yang-flutter/p/17698855.html

相关文章

  • 银行卡发卡银行查询
    起始卡号发卡银行卡类型使用类型103农业银行金穗借记卡借记卡18572昆明农联社金碧卡借记卡255136建行255646建行303光大银行阳光卡借记卡356390中信银行信用卡中心(63020000)中信JCB美元卡贷记卡356391中信银行信用卡中心(63020000)中信JCB美元卡贷记卡356392中信银行信用卡中心(63......
  • 基于微信小程序的公交信息在线查询系统
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了微信小程序公交信息在线查询系统的开发全过程。通过分析微信小程序公交信息在线查询系统信息管理的不足,创建了一个计算机管理微信小程序公交信息在线查询系统信息的方案。文章介绍了微......
  • springboot日志配置
    配置文件使用xml配置日志保存(并不需要pom配置slf4j依赖,starter里面已经配置了依赖了)在项目的resources目录下创建一个【logback-spring.xml】日志配置文件名称只要是一logback开头就行,测试使用log.xml并不会生成日志。合法名称:logback.xml、logback-spring.xml备注:要配置l......
  • SpringBoot项目启动报错:An incompatible version [1.1.22] of the Apache Tomcat Nati
    问题解释:“安装了不兼容的ApacheTomcat原生库版本[1.1.22],而Tomcat需要版本[1.2.14]”解决方法:①打开网页 http://archive.apache.org/dist/tomcat/tomcat-connectors/native/②        ③        ④     ......
  • DSL实现自动补全查询
         ......
  • 多表创建 外键以及多表查询
    1.多表创建的介绍表关系的创建一共有三种:一对一一对多多对多"""如何判断表关系:换位思考法"""#一对多以图书表和出版社表为例先站在图书表的角度问:1.一本图书能否有多个出版社出版?答:不能站在出版社的角度问:1.一个出版社能否......
  • 面试题:Mybatis中的#{}和${}有什么区别?这是我见过最好的回答
    面试题:Mybatis中的#{}和${}有什么区别?前言今天来分享一道比较好的面试题,“Mybatis中的#{}和${}有什么区别?”。对于这个问题,我们一起看看考察点和比较好的回答吧!题,看看普通人考察点mybatis是现在企业级开发中经常使用的数据持久层框架,这个问题就是面试官想考察我们对#{},${}......
  • mybatis
    mybatismybatis是一款优秀的持久层框架MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和JavaPOJO(PlainOldJavaObjects,普通老式Java对象)为数据库中的记录。持久层Dao层,Service层,Cont......
  • springboot中的文件上传与下载
    首先回忆一下springmvc中的文件上传1)引入文件上传相关jar包,commons-io、commons-fileupload2)文件上传表单提交方式必须为post3)要求表单的enctype属性必须为:multipart/form-data4)后台接收文件时,使用multipartFile变量与前端name属性值保持一致5)在springmvc的配置文件中必须......
  • springboot单元测试
    参考文章:SpringBoot单元测试详解_springboottest单元测试_三分恶的博客-CSDN博客JUnit4(三)高级之assertThat和Matchers(匹配器)_FXBStudy的博客-CSDN博客 一:junit测试当你的单元测试代码不需要用到SpringBoot功能,而只是一个简单的测试时,你可以直接编写你的Junit测试......