背景

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

步骤

  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. 在webstorm里使用git

    1,设置git 打开webstorm软件,找到file下面的settings(设置) 打开设置对话窗,找到version control的子级目录git,路径path输入git安装目录下bin目录里的 ...

  2. eNSP配置静态路由

    配置目标:如下拓扑结构,从CLIENT1去pingCLIENT2,ping通 拓扑结构 路由配置 配置各个路由表的核心思想是:只有这个路由表中有一个网段的网络号,才可以从这个路由器跳转到该网段,下面只 ...

  3. LeetCode 788. 旋转数字(Rotated Digits) 36

    788. 旋转数字 788. Rotated Digits 题目描述 我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数.要求每位数字 ...

  4. Apache Kafka安全| Kafka的需求和组成部分

    1.目标 - 卡夫卡安全 今天,在这个Kafka教程中,我们将看到Apache Kafka Security 的概念  .Kafka Security教程包括我们需要安全性的原因,详细介绍加密.有了这 ...

  5. [NOI2008]志愿者招募 (费用流)

    大意: $n$天, 第$i$天要$a_i$个志愿者. $m$种志愿者, 每种无限多, 第$i$种工作时间$[s_i,t_i]$花费$c_i$, 求最少花费. 源点$S$连第一天, 容量$INF$ 第$ ...

  6. CAS 5.x搭建常见问题系列(1).未认证的授权服务

    错误内容 错误信息如下: 未认证授权的服务 CAS的服务记录是空的,没有定义服务.希望通过CAS进行认证的应用程序必须在服务记录中明确定义 错误原因 CAS 5.x 默认情况下不支持HTTP的客户端接 ...

  7. Java电商项目,秒杀,抢购等高并发场景的具体场景和一些概念以及处理思路

    这里我借鉴了网上其他大佬的观点: 一:高并发带来的挑战 原因:秒杀抢购会经常会带来每秒几万的高并发场景,为了更快的返回结果给用户. 吞吐量指标QPS(每秒处理请求数),假设一个业务请求响应耗时为100 ...

  8. Unity VS2017 调试外部DLL

    之前写的C++ DLL VS2012 都可以附加进程的方式调试Unity中的调用 这次用了一个C# DLL VS2017 在Unity 2018上无法附加进程的方式调试 经过一番折腾, 主要是两个问题 ...

  9. 使用sequelize对数据库进行增删改查

    由于本人对于命令比较执着,所以基本都是在命令下操作的,喜欢使用命令的可以使用Cmder,需要安装.配置的可以参考这篇文章: https://www.cnblogs.com/ziyoublog/p/10 ...

  10. Vue props用法详解

    Vue props用法详解 组件接受的选项之一 props 是 Vue 中非常重要的一个选项.父子组件的关系可以总结为: props down, events up 父组件通过 props 向下传递数 ...