springboot整合JPA 多表关联 :一对多 多对多


补充一下自定义SQL
这是连表查询,可以任意查出字符,用Map接收
@Testvoid test3() {JPAQueryFactory jpaQueryFactory = new JPAQueryFactory(em);QStudent student = QStudent.student;QMessage message = QMessage.message;//constructor(StuMesDto.class, student.id, student.name, student.grade, message.id, message.info)List<Map<Expression<?>, ?>> fetch = jpaQueryFactory.select(Projections.map(student.id, student.name, student.grade, message.id, message.info)).from(student).innerJoin(message).on(student.id.eq(message.stu_id)).orderBy(message.id.desc()).limit(1).offset((1 - 1) * 1).fetch();Object o = fetch.get(0).get(message.info);System.out.println(o);}
这是连表查询,可以任意查出字符,用自定义对象接收
@Testvoid test3() {JPAQueryFactory jpaQueryFactory = new JPAQueryFactory(em);QStudent student = QStudent.student;QMessage message = QMessage.message;//List<StuMesDto> fetch = jpaQueryFactory.select(Projections.constructor(StuMesDto.class, student.id, student.name, student.grade, message.id, message.info)).from(student).innerJoin(message).on(student.id.eq(message.stu_id)).orderBy(message.id.desc()).limit(1).offset((1 - 1) * 1).fetch();StuMesDto o = fetch.get(0);System.out.println(o);}
package com.jmj.springDataApp.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Data
@AllArgsConstructor
@NoArgsConstructor
public class StuMesDto {private Long sid;private String name;private Integer grade;private Long id;private String info;
}
QTeacher teacher = QTeacher.teacher;
QStudent student = QStudent.student;List<TeacherWithStudentsDto> result = jpaQueryFactory.select(Projections.constructor(TeacherWithStudentsDto.class,teacher.id,teacher.name,Projections.list(student))).from(teacher).leftJoin(student).on(teacher.id.eq(student.teacher.id)).groupBy(teacher.id).orderBy(teacher.id.asc()).limit(100) // 限制查询结果为前100个老师.fetch().stream().peek(dto -> dto.setStudents(dto.getStudents().subList(0, Math.min(dto.getStudents().size(), 10)))).collect(Collectors.toList());
相关文章:
springboot整合JPA 多表关联 :一对多 多对多
补充一下自定义SQL 这是连表查询,可以任意查出字符,用Map接收 Testvoid test3() {JPAQueryFactory jpaQueryFactory new JPAQueryFactory(em);QStudent student QStudent.student;QMessage message QMessage.message;//constructor(StuMesDto.class, …...
Python 数据分析 Matplotlib篇 plt.rcParams 字典(第5讲)
Python 数据分析 Matplotlib篇 plt.rcParams字典(第5讲) 🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…...
DeamonSet详解
目录 1.1 何为DaemonSet 1.2 DaemonSet 的 API 对象的定义 1.3 DaemonSet实践 1.3.1 创建 DaemonSet 对象 1.3.2 查看 DaemonSet 对象 1.3.3 DaemonSet 版本管理 1.3.4 DaemonSet 的容器镜像版本到 v2.2.0 1.1 何为DaemonSet 介绍DaemonSet我们先来思考一个问题&#x…...
TwIST算法MALTLAB主程序详解
TwIST算法MALTLAB主程序详解 关于TwIST算法的具体原理可以参考: 链接: https://ieeexplore.ieee.org/abstract/document/4358846 链接: https://blog.csdn.net/jbb0523/article/details/52193209 该算法的MATLAB源代码: 链接: http://www.lx.it.pt/~bi…...
Flutter 三: Dart
1 数据类型 数字(number) int double 字符串转换成 num int.parse(“1”) double.parse(“1”);double 四舍五入保留两位小数 toStringAsFixed(2) 返回值为stringdouble 直接舍弃小数点后几位的数据 可使用字符串截取的方式 字符串(string) 单引号 双引号 三引号三引号 可以输…...
redis基本用法学习(C#调用FreeRedis操作redis)
FreeRedis属于常用的基于.net的redis客户端,EasyCaching中也提供适配FreeRedis的包。根据参考文献4中的说法,FreeRedis和CsRedis算是近亲(都是GitHub中账号为2881099下的开源项目),因此其用法特别相似。FreeRedis的主要…...
Postman接口测试(超详细整理)
常用的接口测试工具主要有以下几种 Postman:简单方便的接口调试工具,便于分享和协作。具有接口调试,接口集管理,环境配置,参数化,断言,批量执行,录制接口,Mock Server, …...
【深入解析spring cloud gateway】12 gateway参数调优与分析
本节主要对网关主要的一些参数做一些解释说明,并用压测工具测试一下网关的接口,通过压测来验证参数配置是否合理 一、连接池参数 参数示例 spring:application:name: gatewaycloud:gateway:# http连接设置httpclient:# 全局的响应超时时间,…...
Java继承,父类没有无参构造方法时,子类必须要显式调用父类的构造方法
在Java中,如果一个类没有定义任何构造函数,那么编译器会默认为这个类提供一个无参的构造函数。 这个隐式的构造函数在继承的时候,子类会在自己的构造方法里面默认的调用这个构造函数。 但是,如果我们在父类中定义了一个有参构造…...
Ubuntu 20.04使用Livox Mid-360
参考文章: Ubuntu 20.04使用Livox mid 360 测试 FAST_LIO-CSDN博客 一:Livox mid 360驱动安装与测试 前言: Livox mid360需要使用Livox-SDK2,而非Livox-SDK,以及对应的livox_ros_driver2 。并需要修改FAST_LIO中部…...
C语言之冒泡排序
其实排序有很多的方法,比如:冒泡排序,插入排序,快速排序,归并排序,选择排序等。今天来讲一下最简单的排序:冒泡排序。这种排序的方法效率极其低下。 假设有一个整型数组: int arr[…...
在Linux上安装NVM(Node Version Manager)
在Linux系统上,使用NVM(Node Version Manager)是管理和切换Node.js版本的一种便捷方式。以下是在Linux上安装NVM的步骤: 1. 下载并安装NVM 使用curl或wget下载并运行NVM的安装脚本。选择一种方式执行以下命令之一: …...
常用两种Linux命令生成器
在Linux中,可以使用多种命令来生成随机密码。以下是其中两种常用的命令: 1.pwgen:这个命令可以生成随机、无意义的但容易发音的密码。生成的密码可以只包含小写字母、大小写混合或数字。大写字母和数字会以一种便于记忆的方式放置࿰…...
【OAuth2】授权框架的四种授权方式详解
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《OAuth 2》。🎯🎯 …...
AI数字人不间断直播是什么?数字人直播带货如何搭建?
随着电商行业的崛起,数字人直播成为了最为热门的直播方式之一。数字人直播利用AI技术创建出的数字人进行直播,给观众带来了全新的视觉体验。 一、AI数字人无限播(数字人SaaS系统VX:zhibo175)是什么? AI数字…...
真菌基因组研究高分策略(二):比较基因组揭示寄主外生菌根真菌基因组的动态进化
在表征外生菌根(ECM)真菌的“共生工具包”方面的研究已经取得了重大进展,但宿主特异性如何被编码到ECM真菌基因组中仍知之甚少。2021年发表于《New Phytologist》期刊的文章对ECM真菌宿主特异性和通用性进行了比较基因组分析,重点…...
uni-app之HelloWorld实现
锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…...
CVE-2023-49898 Apache incubator-streampark 远程命令执行漏洞
项目介绍 Apache Flink 和 Apache Spark 被广泛用作下一代大数据流计算引擎。基于大量优秀经验结合最佳实践,我们将任务部署和运行时参数提取到配置文件中。这样,带有开箱即用连接器的易于使用的 RuntimeContext 将带来更轻松、更高效的任务开发体验。它…...
即将来临的2024年,汽车战场再起波澜?
我们来简要概况一下11月主流车企的销量表现: 根据数据显示,11月吉利集团总销量29.32万辆,同比增长28%。这在当月国内主流车企中综合实力凌厉,可谓表现得体。而与吉利直接竞争的比亚迪,尽管数据未公布,但我们…...
Python 爬虫之下载视频(二)
爬取某Y的视频链接和标题 文章目录 爬取某Y的视频链接和标题前言一、基本思路二、程序解析阶段三、程序处理阶段总结 前言 这篇内容就简单给大家写个如何从网页上爬取某B主 主页 页面上所有的视频链接和视频标题。 这篇是基础好好看,下篇会根据这篇的结果做一个批…...
MySQL数据库基础聚合函数
聚合函数...
OpCore Simplify技术突破:如何用智能适配重构开源系统定制效率
OpCore Simplify技术突破:如何用智能适配重构开源系统定制效率 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在开源系统定制领域&#x…...
从“认怂”到“被看见”:flomo的产品设计哲学
当大多数笔记软件都在追求“大而全”时,有一款产品选择了一条完全不同的路。它不让你写标题,不支持复杂排版,甚至在官网上大大方方地列出“自己不擅长什么”。它的创始人说:“35岁再创业,我学会了认怂。”它就是flomo&…...
安全治理加速金融AI收入增长
金融机构正在学习如何部署合规的AI解决方案,以实现更大的收入增长和市场优势。在过去十年的大部分时间里,金融机构主要将AI视为提高纯粹效率的机制。在那个时代,量化团队编写系统来发现账本差异或减少自动交易执行时间中的毫秒。只要季度资产…...
别再只盯着虚短虚断!运放设计必须掌握的6个非理想参数(附MCP6N16实测数据)
运算放大器非理想特性实战指南:从理论到MCP6N16实测 在嵌入式系统设计中,运算放大器如同精密仪器中的齿轮,其微小偏差可能导致整个测量系统的崩溃。许多工程师在初期学习阶段被"虚短虚断"的理想模型所束缚,直到实际项目…...
OLAP] DuckDB : 开源免费的、面向嵌入式场景、列式存储的分析型数据库
0 序 DuckDB 是近期非常火的一款 AP 数据库,其独特的定位很有趣。甚至有数据库产品考虑将其纳入进来,作为分析能力的扩展。 考虑到项目中一个数据处理场景,就此调研一二。 DuckDB 的爆火,也给所有盲目追逐“大数据”的技术人敲响…...
从POC到EXP:深入拆解CVE-2025-0282利用链中的三大‘拦路虎’(NX/PIE、虚函数、内存释放)与绕过思路
从POC到EXP:深入拆解CVE-2025-0282利用链中的三大‘拦路虎’(NX/PIE、虚函数、内存释放)与绕过思路 现代漏洞利用已演变为攻防双方在二进制层面的精密博弈。当安全研究员发现一个栈溢出漏洞时,真正的挑战往往始于漏洞验证之后——…...
摒弃固定显示界面,程序根据使用场景,自动切换显示界面(简洁版/详细版),适配不同需求。
一、 实际应用场景描述 (Scenario)假设你正在开发一台高精度光谱分析仪。这台设备有三种典型的使用者:1. 研发工程师(R&D):在实验室调试光路和算法。他们需要看到原始 ADC 值、温度漂移曲线、信噪比等详细数据。2. 质检员&…...
Navicat数据库自动备份实战:如何设置定时任务避免数据丢失
Navicat数据库自动备份实战:如何设置定时任务避免数据丢失 数据是现代企业的核心资产,一次意外的数据丢失可能造成难以估量的损失。作为数据库管理工具中的佼佼者,Navicat提供了强大的自动备份功能,能够帮助中小企业和个人开发者建…...
LeetCode 300. Longest Increasing Subsequence 题解
LeetCode 300. Longest Increasing Subsequence 题解 题目描述 给你一个整数数组 nums,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,…...
