背景

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

步骤

  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. LeetCode 445. 两数相加 II(Add Two Numbers II)

    445. 两数相加 II 445. Add Two Numbers II 题目描述 给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个 ...

  2. postman上传文件对参数的contentType类型设置方式

    项目中使用postman模拟上传文件接口时,总是不成功,发现content-type设置不对,设置head的contentType后,还是不行,后来无意中发现文件参数默认的content-type类型 ...

  3. [转帖]Linux教程(8)-Linux中的进程和日志㐇、

    Linux教程(8)-Linux中的进程和日志 2018-08-20 23:42:23 钱婷婷 阅读数 3554更多 分类专栏: Linux教程与操作 Linux教程与使用   版权声明:本文为博主原 ...

  4. Java开发笔记(一百一十一)POST方式的HTTP调用

    前面介绍了GET方式的HTTP调用,该方式主要用于向服务器索取数据,不管是字符串形式的应答报文,还是二进制形式的网络文件,都属于服务器提供的信息.当然调用方也可以向服务地址传送请求参数,除了通过连接对 ...

  5. python基础 — 致初学者的天梯

    Python简介 Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新 功能的添加,越来越多被用于独立的.大型项目 ...

  6. MGR并行复制从节点复制线程死锁

    1.故障现象 20191113-22:32 datax全量同步t_shop_info表到 eorder所在的实例,t_shop_info表有两个唯一约束.总数据量不超过1w行,同步完成后MGR从库复制 ...

  7. Elasticsearch-6.7.0系列(八)开启kibana监控

    修改ES配置: 修改elasticsearch.yml,添加如下xpack配置: xpack.security.enabled: true xpack.ml.enabled: true xpack.l ...

  8. jmeter_图形监控

    图形监控插件下载: http://jmeter-plugins.org/downloads/all/   下载: JMeterPlugins-Standard-1.4.0 ServerAgent-2. ...

  9. Synchronized 和 Lock 的主要区别(转)

    Synchronized 和 Lock 的主要区别Synchronzied 和 Lock 的主要区别如下: 存在层面:Syncronized 是Java 中的一个关键字,存在于 JVM 层面,Lock ...

  10. 【转载】C#中string类使用Replace方法来替换字符串

    在C#的字符串操作过程中,有时候需要替换字符串中的某个子字符串,此时就可以使用到字符串类自带的Replace方法来实现,Replace方法将查找到所有符合被替换的子字符串,然后将之全部替换为目标字符串 ...