背景

关联起来查询三个表的数据

步骤

  1. 定义接收结果的中间类
  2. 在 @Query 中编写 HSQL
  3. 从数据库查询

代码

定义接收结果的中间类

IterationVo.java

/**
* IterationVo
* @description 封装查询到的迭代详细信息
* @author daleyzou
* @date 2019年11月20日 20:09
* @version 3.0.0
*/
public class IterationVo implements Serializable {
private String businessUnitName; private String businessLineName; private int id; private int businessUnitId; private int businessLineId; private String iterationName; private String item; private String itemCode; private String version; private String note; private String baseBranchInfo; private Date createTime; public IterationVo(IterationPo iterationPo, String businessUnitName, String businessLineName) {
this.id = iterationPo.getId();
this.businessLineId = iterationPo.getBusinessLineId();
this.businessUnitId = iterationPo.getBusinessUnitId();
this.version = iterationPo.getVersion();
this.item = iterationPo.getItem();
this.itemCode = iterationPo.getItemCode();
this.baseBranchInfo = iterationPo.getBaseBranchInfo();
this.note = iterationPo.getNote();
this.iterationName = iterationPo.getIterationName();
this.createTime = iterationPo.getCreateTime(); this.businessUnitName = businessUnitName;
this.businessLineName = businessLineName;
} set方法 ...
get方法 ...
}

IterationPo.java

@Entity
@Table(name = "iteration")
@EntityListeners(AuditingEntityListener.class)
@DynamicInsert
@DynamicUpdate
public class IterationPo {
private int id; private int businessUnitId; private int businessLineId; private String iterationName; private String item; private String itemCode; private String createUserName; private String updateUserName; private String version; private String note; private Date createTime; private Date updateTime; private String baseBranchInfo; private int publishing; private boolean published; private boolean canFullRelease;
}
在 @Query 中编写 HSQL

IterationDao.java

/**
* IterationDao
* @description 迭代数据库操作
* @author daleyzou
* @date 2019年11月08日 10:53
* @version 3.0.0
*/
@Repository
public interface IterationDao extends JpaRepository<IterationPo, Integer> {
// 分页查询
@Query(value = "SELECT new com.daleyzou.middleware.mwgrayscaledubbo.base.vo.IterationVo(iteration, unit.name, line.name) FROM IterationPo iteration, BusinessUnitPo unit, BusinessLinePo line WHERE iteration.businessUnitId=unit.id and iteration.businessLineId=line.id ")
Page<IterationVo> findIterationInfo(Pageable pageable); // 根据主键查询
@Query(value = "SELECT new com.daleyzou.middleware.mwgrayscaledubbo.base.vo.IterationVo(iteration, unit.name, line.name) FROM IterationPo iteration, BusinessUnitPo unit, BusinessLinePo line WHERE iteration.businessUnitId=unit.id and iteration.businessLineId=line.id and iteration.id=:id")
IterationVo findIterationInfoById(@Param("id") Integer id);
}

从数据库查询

使用 @Autowried 依赖注入后调用即可

分页在 service 层这样调用

public Page<IterationVo> getIterationList(Integer page, Integer size) {
Pageable pageable = new PageRequest(page, size, Sort.Direction.DESC, "createTime");
return iterationDao.findIterationInfo(pageable);
}

springboot+jpa多表查询的更多相关文章

  1. SpringBoot Data JPA 关联表查询的方法

    SpringBoot Data JPA实现 一对多.多对一关联表查询 开发环境 IDEA 2017.1 Java1.8 SpringBoot 2.0 MySQL 5.X 功能需求 通过关联关系查询商店 ...

  2. springboot jpa 多条件查询(多表)

    前几天写的,贴上来. 实体类. package com.syl.demo.daomain; import lombok.Data; import javax.persistence.*; /** * ...

  3. springboot jpa 多条件查询(单表)

    需要实现的功能: 多个搜索输入框:全部不填,则查出所有列表:填了条件,就按条件查找:填的条件个数不定. 方法实现的核心:jpa自带的Specification<T> (目前只需要单表,多表 ...

  4. jpa 联表查询 返回自定义对象 hql语法 原生sql 语法 1.11.9版本

    -----业务场景中经常涉及到联查,jpa的hql语法提供了内连接的查询方式(不支持复杂hql,比如left join ,right join).  上代码了 1.我们要联查房屋和房屋用户中间表,通过 ...

  5. Spring Hibernate JPA 联表查询 复杂查询(转)

    今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibern ...

  6. Spring Hibernate JPA 联表查询 复杂查询

    今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibern ...

  7. 关于Spring Data JPA 多表查询 返回自定义Vo的问题记录

    这两天开了一个新项目,使用SpringBoot+SpringData,  刚做了一个小功能,都是一张表的操作没什么问题,今天设计到了两张表联查,两张表各取了几个字段,组合成了一个vo, 当我用原生sq ...

  8. JPA 连表查询

    A表和B表 @Entity @Table(name = "A", schema = "kps", catalog = "kps") @Dyn ...

  9. springdata jpa多表查询的方式

    方式一:使用@Query注解方式查询主要有JPQL方式,也就是面向对象的方式,这种情况下查表其实查的是对象,字段是实体中的属性,该方式可以直接映射到实体,如下图. 使用jpql的方式模糊查询时候不能使 ...

随机推荐

  1. session知识点小结

    Session: 1. 概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象HttpSession中. 2. 快速入门: 1. 获取HttpSession对象: Http ...

  2. 使用while循环来处理列表和字典——参考Python编程从入门到实践

    1. 在列表之间移动元素 unconfirmed_users = ['alice', 'brian', 'candace'] confirmed_users = [] # 验证每个用户,知道没有未验证 ...

  3. rsync 使用

    rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件. rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分, ...

  4. Node模块化

    Node.js是一个能够在服务器端运行JavaScript的开放源代码.跨平台JavaScript运行环境.Node是对ES标准一个实现,也是一个JS引擎.与传统服务器不同是Node的服务器是单线程的 ...

  5. docker postgres 导出导入数据

    导出 -s  选项用来只导出表结构,而不会导出表中的数据 -t   选项用来指定要导出的数据库表 格式:docker exec -ti 容器名 pg_dump -U 用户名 -s -t table_n ...

  6. SQL Server中,常用的全局变量

    在SQL Server中,全局变量是一种特殊类型的变量,服务器将维护这些变量的值.全局变量以@@前缀开头,不必进行声明,它们属于系统定义的函数.下表就是SQL Server中一些常用的全局变量. 全局 ...

  7. Matlab图形绘制

    图形绘制 离散函数图形: 例:离散数据和离散函数可视化(离散数据作图方式) X1=[,,,,,,,,,,,,,,,,,,,]; Y1=[,,,,,,,,,,,,,,,,,,,]; figure() p ...

  8. 《Linux》跟老男孩学Linux核心系统命令

    一.命令行简介 1.1 Linux 命令行提示符介绍 [root@root_pc ~]# #<==这是超级管理员root用户对应的命令行 [oldboy@oldboy_pc ~]$ #<= ...

  9. Attribute与Property关系

    总的来说,其实是HTML Attribute 与 DOM property之间的关系. 1 什么是Property? JS DOM Object对象有property.一个property可能是不同数 ...

  10. 【iOS录音与播放】实现利用音频队列,通过缓存进行对声音的采集与播放

    都说iOS最恶心的部分是流媒体,其中恶心的恶心之处更在即时语音. 所以我们先不谈即时语音,研究一下,iOS中声音采集与播放的实现. 要在iOS设备上实现录音和播放功能,苹果提供了简单的做法,那就是利用 ...