JPA - JPQL完成复杂的多表查询

目录

  • 前言
  • 示例
    • 建表语句
    • Entity实体
    • JPQL多表查询
    • 完整代码
    • 调用结果

前言

JPA中可以通过设置实体的导航属性 + JPQL完成复杂的多表查询,简化SQL的编写。


示例

建表语句

  • Table
CREATE TABLE `school` (`id` int(11) DEFAULT NULL,`name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ciCREATE TABLE `student` (`id` int(11) DEFAULT NULL,`name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ciCREATE TABLE `school_student` (`id` int(11) DEFAULT NULL,`school_id` int(11) DEFAULT NULL,`student_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
  • 上述表中Studen和School呈现多对多关系

Entity实体

  • School.java
@Entity
@Setter
@Getter
public class School {@Idprivate Integer id;private String name;/*** 多对多关系配置*/@ManyToMany(fetch = FetchType.LAZY, mappedBy = "schoolList")private List<Student> studentList;}
  • Student.java
@Entity
public class Student {@Idprivate Integer id;private String name;/*** 多对多关系配置*/@ManyToMany(fetch = FetchType.LAZY)@JoinTable(name = "school_student",joinColumns = @JoinColumn(name = "student_id"),inverseJoinColumns = @JoinColumn(name = "school_id"))private List<School> schoolList;}

JPQL多表查询

  • 在这里,通过Studen ID 查询出关联的 School
  • 常规SQL关联查询:
selectsch.id ,sch.name fromschool schinner joinschool_student ss on sch.id = ss.school_id inner joinstudent stu on ss.student_id = stu.id wherestu.id = 1
  • JPQL多表查询:
@Query("select s from School s " +"join s.studentList ss " +"where ss.id = :id ")

完整代码

  • TestController.java
@RestController
@RequestMapping("/test")
public class TestController {@Autowiredprivate StudentRepository studentRepository;@GetMapping(value = "/test")public List<Student> test(@RequestParam Integer id){return studentRepository.findStudenBySchool(id);}}
  • StudentRepository.java
@Repository
public interface StudentRepository extends JpaRepository<School, Long> {@Query("select s from School s " +"join s.studentList ss " +"where ss.id = :id ")List<Student> findStudenBySchool(Integer id);}

调用结果

在这里插入图片描述


- End -
- 个人学习笔记 -
- 仅供参考 -

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/143503.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

JPQL HQL Spring Data JPA @Query | 最全知识清单

简单介绍 JPQL: JPA的一部分&#xff0c;是一个平台无关的面向对象查询语言&#xff0c;通过类似 SQL 的语句进行 JPA 查询&#xff0c;这在构建动态查询时非常有用。样子 SELECT u FROM User u WHERE u.status :status and u.name :name HQL: Hibernate 的面向对象查询…

JPA的查询语言JPQL

JPA的查询语言(JPQL)是一种和SQL非常类似的中间性和对象化查询语言。它可以被编译成不同的底层数据库能接受的SQL&#xff0c;从而屏蔽不同数据库的差异&#xff0c;确保用JPQL查询语言编写的代码可在不同的数据库上运行。比起EJB 2.1的查询语言&#xff0c;EJB3可以运行期构造…

JPQL语句

JPQL语言 JPQL语言&#xff0c;即 Java Persistence Query Language 的简称。JPQL 是一种和 SQL 非常类似的中间性和对象化查询语言&#xff0c;它最终会被编译成针对不同底层数据库的 SQL 查询&#xff0c;从而屏蔽不同数据库的差异。 JPQL语言的语句可以是 select 语句、upda…

jpa之jpql查询

JPQL介绍 JPQL语言&#xff0c;即 Java Persistence Query Language 的简称。JPQL 是一种和 SQL 非常类似的中间性和对象化查询语言&#xff0c;它最终会被编译成针对不同底层数据库的 SQL 查询&#xff0c;从而屏蔽不同数据库的差异。如果会hibernate的hql查询&#xff0c;那…

JPA之JPQL

文章目录 什么是JPQL?JPQL怎么用&#xff1f;JPQL的查询demoJPQL的占位符与入参问题修改demo删除demo插入demo 什么是JPQL? 所谓JPQL&#xff0c;就是Java Persistence Query Language的缩写&#xff0c;也就是java持久化查询语言&#xff0e;JPQL是一种可移植的查询语言&am…

JPQL-Query查询实例详解

前面学习了JPQL语言和Query接口。这里学习一下如果通过JPQL和Query接口进行数据的查询、更新和删除。 【1】普通查询 首先说明一下FROM子句和Select…FROM。 from 子句是查询语句的必选子句。 Select 用来指定查询返回的结果实体或实体的某些属性。 From 子句声明查询源实体…

JPQL和SQL的比较

前言 在JAVA EE中&#xff0c;JPQL是专门为Java 应用程序访问和导航实体实例设计的。Java Presistence Query Language(JPQL)&#xff0c;java持久性查询语言。它是JPA规范的重要组成部分&#xff0c;其实它就是一种查询语言&#xff0c;语法类似于SQL语法&#xff0c;但是有着…

【JPQL】--JPQL和SQL的比较

前言 在JAVA EE中&#xff0c;JPQL是专门为Java 应用程序访问和导航实体实例设计的。Java Presistence Query Language(JPQL)&#xff0c;java持久性查询语言。它是JPA规范的重要组成部分&#xff0c;其实它就是一种查询语言&#xff0c;语法类似于SQL语法&#xff0c;但是有着…

JPQL

JPQL&#xff08;JavaPersistence Query Language&#xff09;&#xff0c;是基于实体的查询&#xff0c;所查询的内容都是实体或实体属性。 1、查询实体 SELECT c FROM Customer c JPQL语句与SQL基本类似&#xff0c;但它是基于实体的查询。在初次使用时&#xff0c;需要注…

JPQL查询

JPQL查询 1 jpql的介绍 sql&#xff1a;查询的是表和表中的字段。 jpql&#xff1a;查询的是实体类和类中的属性。 jpql和sql语句的语法相似。 JPQL全称Java Persistence Query Language 基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移植的…

JPQL详解

前提 最近在改bug的时候发现了自己的缺点&#xff0c;在改前端bug的时候非常顺利顺手。但是在改后端bug的时候如果遇到不是太难的问题还可以解决&#xff0c;但是一到难点感觉自己就懵逼&#xff01; 所以讲解了关于JPQl相关内容 JPA 在说jpql之前必须要说一下什么是JPA&…

JPA(4) JPQL一些简单的查询语法

JPQL --> JPA Query Language --> JPA的查询语句 (另外HQL:Hibernate的查询语句) JPQL本质&#xff1a;JPA通过antlr-2.7.7.jar将JPQL编译成sql并且封装执行的。 JPQL和SQL区别&#xff1f;&#xff1f; --> 它们查询的关键字都是一样的&#xff…

6月3号抖音显示服务器维护中,抖音搜索功能升级维护 期间无法进行用户搜索

这两天有很多小伙伴说抖音上的搜索功能搜不到人了&#xff0c;这是怎么回事呢&#xff1f;其实&#xff0c;这两天&#xff0c;抖音的搜索功能正在升级维护&#xff0c;所以导致搜索功能暂时无法使用。 类别&#xff1a;影音娱乐 大小&#xff1a;210.36M 语言&#xff1a…

java抖音获取用户信息失败_为什么抖音用id搜不到用户?抖音用id搜不到用户的原因与解决方法...

在抖音短视频上&#xff0c;网友可以通过抖音id来搜索指定的抖音用户&#xff0c;并添加为好友&#xff0c;不过&#xff0c;这几天&#xff0c;不断有网友反映一个问题&#xff0c;那就是&#xff1a;抖音用id搜不到用户&#xff0c;那么&#xff0c;为什么抖音用id搜不到用户…

【已解决】抖音如何取消关注已注销的账户

文章目录 1. 按2. 操作步骤 1. 按 我们有时候会发现自己的关注列表里有一些用户显示该用户已注销&#xff0c;这时我们想取消关注&#xff0c;但是却发现没有取消关注按钮&#xff0c;怎么办呢&#xff1f;其实我们可以记下这个账号的名字&#xff0c;然后到关注列表的最上方搜…

最近抖音上虚拟元宇宙项目-猜歌名,代码解析

介绍一下最近抖音上元宇宙虚拟项目猜歌名&#xff0c;直播游戏。用户互动猜歌名&#xff0c;30秒后自动切歌。 CSDN项目源码&#xff1a;https://download.csdn.net/download/u010978757/85326344 类似的弹幕互动游戏除了猜歌名&#xff0c;还有挤地铁、广场舞和舞厅蹦迪的&a…

抖音小店无货源是不是在割韭菜?

哈喽&#xff0c;大家好&#xff0c;我是布丁。 最近很多小伙伴私信布丁&#xff0c;问抖音小店无货源是不是在割韭菜? 今天布丁腾出了些时间&#xff0c;来和小伙伴们分享一下抖音小店无货源。希望能帮助小伙伴解决问题。 抖音小店 抖音小店依托抖音&#xff0c;所以会获得…

抖音快手短视频如何快速上热门

抖音快手短视频怎么上热门?这是许多抖友的一个烦恼! 抖音快手短视频怎么上热门?这也是许多都有的一个梦想! 抖音快手短视频怎么火&#xff0c;抖音快手短视频怎么上热门&#xff0c;相信玩抖音快手短视频的人都想知道其中的技巧。今天我们就把最详细的教程分享给大家。 下面分…

抖音小店无货源怎么做?具体步骤讲解,经验分享

哈喽&#xff0c;大家好&#xff0c;我是布丁。 废话不多说&#xff0c;直接上干货。 抖音小店无货源是什么&#xff1f; 抖音小店就是在抖音上开一家小店&#xff0c;抖音小店是一个电商平台&#xff0c;无货源是一种操作模式。 无货源模式就是在网上采集其他店铺的商品&a…

抖音快手短视频剪辑工具

新媒体短视频运营中短视频制作是较为重要的一环&#xff0c;而短视频制作时选择一款适合的短视频剪辑工具会达到事半功倍的效果&#xff0c;你的短视频需要深入用户内心&#xff0c;契合短视频自身的特色和要求&#xff0c;否则吐血写的脚本、拍完视频信心满满准备剪视频打开电…