当前位置: 首页 > news >正文

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());

http://www.lryc.cn/news/266654.html

相关文章:

  • Python 数据分析 Matplotlib篇 plt.rcParams 字典(第5讲)
  • DeamonSet详解
  • TwIST算法MALTLAB主程序详解
  • Flutter 三: Dart
  • redis基本用法学习(C#调用FreeRedis操作redis)
  • Postman接口测试(超详细整理)
  • 【深入解析spring cloud gateway】12 gateway参数调优与分析
  • Java继承,父类没有无参构造方法时,子类必须要显式调用父类的构造方法
  • Ubuntu 20.04使用Livox Mid-360
  • C语言之冒泡排序
  • 在Linux上安装NVM(Node Version Manager)
  • 常用两种Linux命令生成器
  • 【OAuth2】授权框架的四种授权方式详解
  • AI数字人不间断直播是什么?数字人直播带货如何搭建?
  • 真菌基因组研究高分策略(二):比较基因组揭示寄主外生菌根真菌基因组的动态进化
  • uni-app之HelloWorld实现
  • CVE-2023-49898 Apache incubator-streampark 远程命令执行漏洞
  • 即将来临的2024年,汽车战场再起波澜?
  • Python 爬虫之下载视频(二)
  • 智能优化算法应用:基于原子轨道搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • [机器人-2]:开源MIT Min cheetah机械狗设计(二):机械结构设计
  • 用友U8+CRM help2 任意文件读取漏洞复现
  • freeRTOS实时操作系统学习笔记
  • 解决虚拟机卡顿、卡死、待机后不动的情况(真实有效
  • 【MybatisPlus快速入门】(3)SpringBoot整合MybatisPlus 之 Lombok插件安装及MybatisPlus分页代码示例
  • SpaceDesk如何连接平板/PC(生产力副屏)
  • 61.SVN版本控制系统
  • 操作系统 内存管理篇
  • 深度学习中用来训练的train.py 探究学习2.0( 数据预处理)
  • vscode debug c++代码