springboot+jpa多表查询
背景
关联起来查询三个表的数据
步骤
- 定义接收结果的中间类
- 在 @Query 中编写 HSQL
- 从数据库查询
代码
定义接收结果的中间类
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多表查询的更多相关文章
- SpringBoot Data JPA 关联表查询的方法
		SpringBoot Data JPA实现 一对多.多对一关联表查询 开发环境 IDEA 2017.1 Java1.8 SpringBoot 2.0 MySQL 5.X 功能需求 通过关联关系查询商店 ... 
- springboot jpa 多条件查询(多表)
		前几天写的,贴上来. 实体类. package com.syl.demo.daomain; import lombok.Data; import javax.persistence.*; /** * ... 
- springboot jpa 多条件查询(单表)
		需要实现的功能: 多个搜索输入框:全部不填,则查出所有列表:填了条件,就按条件查找:填的条件个数不定. 方法实现的核心:jpa自带的Specification<T> (目前只需要单表,多表 ... 
- jpa  联表查询 返回自定义对象  hql语法 原生sql 语法 1.11.9版本
		-----业务场景中经常涉及到联查,jpa的hql语法提供了内连接的查询方式(不支持复杂hql,比如left join ,right join). 上代码了 1.我们要联查房屋和房屋用户中间表,通过 ... 
- Spring Hibernate JPA 联表查询 复杂查询(转)
		今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibern ... 
- Spring Hibernate JPA 联表查询 复杂查询
		今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibern ... 
- 关于Spring Data JPA 多表查询 返回自定义Vo的问题记录
		这两天开了一个新项目,使用SpringBoot+SpringData, 刚做了一个小功能,都是一张表的操作没什么问题,今天设计到了两张表联查,两张表各取了几个字段,组合成了一个vo, 当我用原生sq ... 
- JPA 连表查询
		A表和B表 @Entity @Table(name = "A", schema = "kps", catalog = "kps") @Dyn ... 
- springdata jpa多表查询的方式
		方式一:使用@Query注解方式查询主要有JPQL方式,也就是面向对象的方式,这种情况下查表其实查的是对象,字段是实体中的属性,该方式可以直接映射到实体,如下图. 使用jpql的方式模糊查询时候不能使 ... 
随机推荐
- Cannot find bounds of current function
			MinGW编译平台的应用程序使用libcef.dll,当调用cef的capi接口时程序崩溃.调试单步到cef capi函数时,调试器报错“Cannot find bounds of current f ... 
- Apache ZooKeeper在Kafka中的角色 - 监控和配置
			1.目标 今天,我们将看到Zookeeper在Kafka中的角色.本文包含Kafka中需要ZooKeeper的原因.我们可以说,ZooKeeper是Apache Kafka不可分割的一部分.在了解Zo ... 
- 使用VMware安装Mac OS的综合整理教程(你要的这里都有……)
			最近打算使用vmware安装Mac系统,听说安装Mac系统是非常繁琐的,经过几番尝试确实如此,所以写下此教程来更完整地讲解能够成功安装mac的步骤,那么废话不多说. 本次教程整合于多个网上教程,但如果 ... 
- GC收集器
			新生代收集器 Serial New 单线程收集器,工作时必须暂停其他线程: 简单高效,没有线程交互开销: 基于复制算法: Parallel New 对Serial的改进,多线程: CPU数量<4 ... 
- centos7+ 在线yum安装docker-ce
			yum install -y yum-utils //扩展yum功能 yum-config-manager --add-repo http://mirrors.aliyun.com/docker- ... 
- CF449E Jzzhu and Squares
			题目大意:有一个$n\times m$的方格图,求其中所有的格点正方形完整包含的小方格个数,多组询问.$n,m\leqslant 10^6$ 题解:令$n\leqslant m$.有一个显然的式子:$ ... 
- vscode插件之背景插件(background)
			1.在插件tab搜索background 2.打开vscode的配置页 { "background.useDefault": false, "background.cus ... 
- nginx-rtmp之直播视频流的推送
			一.RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写.该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变 ... 
- JAVA相关知识
			1.CopyOnWrite (1).在写操作的线程,会将数组复制出来一份进行操作.而原本的数组不会做改变. (2)读线程则不会受到影响,但是可能读到的是一个过期的数据. 在juc(java.util. ... 
- thinkPHP中session()方法用法详解
			本文实例讲述了thinkPHP中session()方法用法.分享给大家供大家参考,具体如下: 系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成. 用法 ? ... 
