把一个表的查询结果当做另一个表的一个字段输出

2023-10-30

把一个表的查询结果当做另一个表的一个字段输出

CourseController.java
//Controller
@GetMapping("/getPage/{number}/{size}")
    @ApiOperation(value = "分页查询课程表(含已更新章节字段)", tags = {"2020-09-09"})
    @ApiOperationSupport(
            order = 7,
            ignoreParameters = {"createTime", "updateTime"}
    )
    @ResponseBody
    public Result<TabCourseVo> getPage(@PathVariable final int number, @PathVariable final int size, final TabCourse condition) {
        return new Result<TabCourseVo>().execute(result -> result.setSuccess(service.getPage(
                Optional.ofNullable(condition).orElseGet(TabCourse::new),
                Pager.builder().number(number).size(size).build()
        )));
    }

如果number和size不加@PathVariable的话,会出现
500:请求失败,不明确的异常:Optional int parameter ‘number’ is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type
这个错误
如果想传递当前登录的user信息的话需要加上@ApiIgnore @AuthenticationPrincipal注解

CourseService.java
//Service
public QueryResults<TabCourseVo> getPage(final TabCourse condition, final Pager pager) {
        QTabCourseChapter tabCourseChapter = QTabCourseChapter.tabCourseChapter;
        return repository.getPage(condition,Pager.rebuild(pager), TabCourseVo.class,TabCourse.allColumnAppends(
                tabCourseChapter.id.count().as("update_chapters")
        ));
    }
CourseRepository.java
//Repository
default <T> QueryResults<T> getPage(final TabCourse condition, final Pager pager, final Class<T> clazz,final Expression<?>... exps) {
        QTabCourseChapter tabCourseChapter = QTabCourseChapter.tabCourseChapter;
        return jpaQueryFactory.<JPAQueryFactory>get()
                .select(Projections.bean(clazz, exps))
                .from(q)
                .leftJoin(tabCourseChapter)
                .on(q.id.eq(tabCourseChapter.courseId))
                .where(condition.where().toArray())
                .groupBy(q.id)
                .offset(pager.offset())
                .limit(pager.limit())
                .fetchResults();
    }
TabCourseVo.java
//返回值的实体,继承TabCourse并添加update_chapters字段
package com.st.kxy.business.course;

import com.st.kxy.business.course.entity.TabCourse;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

@EqualsAndHashCode(callSuper = true)
@ToString
@Data
public class TabCourseVo  extends TabCourse {

    private Long update_chapters;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

把一个表的查询结果当做另一个表的一个字段输出 的相关文章

随机推荐

  • Hbase集群调优

    一 hbase现有硬件资源的理论性能 1 集群容量规划公式 优化调整 发挥硬件的最大优势 Disk Size Java Heap RegionSize MemstoreSize ReplicationFactor HeapFractionF
  • 解压报错tar: This does not look like a tar archive

    从google drive上下载了一个权重文件 是tar格式的 于是我想当然的使用指令进行解压 tar xvf filename tar 但是始终报错 tar This does not look like a tar archive ta
  • 【亲测】mwget安装成功

    微信公众号 leetcode algos life 代码随想随记 小红书 412408155 CSDN https blog csdn net woai8339 type blog 抖音 暂未开始 计划开始 tian72530 知乎 暂未开
  • 商城APP软件开发要素有哪些

    商城APP软件体系是当今电商行业经常会运用的商城体系 既支撑企业对企业的运营形式 也支撑卖家对消费者的运营形式 便是现在常见的B2C B2B的电商形式APP 跟着现在的互联网的遍及现在这些电商都是成为了电商商家开展的不可缺少的互联网平台 打
  • Golang流程控制-if(十一)

    单分支 if 条件表达式 代码块 说明 当条件表达式为true时 就会执行 内的代码 注意 是必须有的 就算你只写一行代码 双分支 if 条件表达式 代码块1 else 代码块2 说明 当条件表达式成立 执行代码块1 否则执行代码块2 也是
  • 【STM32CubeMX项目】小时钟V1.0

    前言 基于STM32CubeMx STM32F103C6T6编写时钟功能 现在以及能实现时钟的简单功能 做文记录下 还有很多可以改进的地方 也算留下的基础版本下来备份吧 我愿称之为V1 0版本 可供学习参考 实物 引脚接线 OLED STM
  • springboot启动流程

    springboot启动流程 四 application配置文件加载过程 lay 博客园 cnblogs com
  • 完全用 GNU/Linux 工作

    完全用 GNU Linux 工作 摈弃 Windows 低效率的工作方式 发掘 Linux 身上的 UNIX 气质 我已经半年没有使用 Windows 的方式工作了 Linux 高效的完成了我所 有的工作 GNU Linux 不是每个人都想
  • 【SQLi-LABS】Less -11 注入思路以及过程

    前言 less 11 是 sqli labs 的第一道 POST 型注入题 因此 我们不能再用之前 GET 型注入的方法 在搜索框进行注入 而是要在输入框里面完成注入 下面的注入流程是基于nliuc师傅的视频教程实现的 下面是他的博客 大家
  • C 语言中int, float, double 和 char 字节大小

    C 语言中int float double 和 char 字节大小 使用 sizeof 操作符计算int float double 和 char四种变量字节大小 sizeof 是 C 语言的一种单目操作符 并不是函数 sizeof 操作符以
  • 百炼智能发布垂直模型“爱迪生”,B2B行业的AIGC大潮来了

    图片来源 Pixels AIGC终于来到B2B行业 企业服务 AGI时代已拉开帷幕 数科星球原创 作者丨苑晶 编辑丨大兔 百炼智能是一家专注B2B行业的智能营销企业 在过去 该行业经历了大数据 人工智能时代的洗礼 随着行业对数据的运用不断纯
  • 内存带宽测试与AVX指令集读写内存

    一 内存理论带宽的计算 内存带宽计算公式 带宽 内存核心频率 内存总线位数 倍增系数 先容我从DDR的技术说起 DDR采用时钟脉冲上升 下降沿各传一次数据 1个时钟信号可以传输2倍于SDRAM的数据 所以又称为双倍速率SDRAM 它的倍增系
  • 知乎3000+赞,同事考上公务员后,抱怨“闲出了鸟”...

    番外篇 故事改编自知乎高赞回答 作者 陈大侠 链接 https www zhihu com question 266783359 answer 316889226 漫画原创公众号 不会笑青年 授权转载请联系微信 laughyouth369
  • Flutter应用开发,系统样式改不了?SystemChrome 状态栏、导航栏、屏幕方向……想改就改

    文章目录 开发场景 SystemChrome 介绍 SystemChrome的使用 导入 SystemChrome 包 隐藏状态栏 说明 改变状态栏的样式 注意事项 其他样式说明 锁定屏幕方向 锁定屏幕方向实例 注意事项 开发场景 开发AP
  • 爬虫学习笔记,从基础到部署。

    爬虫基础知识 笔记中出现的代码已经全部放到了github上https github com liangxs0 python spider save git 1 http基本原理 http 协议 在HTTP之上添加了安全协议的叫https s
  • js筛选对象中的空值

    如果对象中属性比较多 可以循环对象 let data id this equipmentID codeName this equipmentName equipmentInfo this equipmentSite pageSize thi
  • MySQL Index Condition小结

    什么是index Condition 索引下推 index condition pushdown 简称ICP 在Mysql5 6的版本上推出 用于优化查询 在不使用ICP的情况下 在使用非主键索引 又叫普通索引或者二级索引 进行查询时 存储
  • elementui的table复选框单选

  • 无线网卡插上电脑没反应的解决办法

    今天偶然切换WiFi时 网卡突然不能用了 右下角的网络连接标识一直都是显示的无网络 按照百度的方法试了 无非就是装驱动 插电脑后板 也没用 然后我就发现把无线网卡拔了重新插入的时候右下角显示了USB设备的标识 打开 我的电脑 也能发现有后面
  • 把一个表的查询结果当做另一个表的一个字段输出

    把一个表的查询结果当做另一个表的一个字段输出 CourseController java Controller GetMapping getPage number size ApiOperation value 分页查询课程表 含已更新章节