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的方式模糊查询时候不能使 ...
随机推荐
- 在webstorm里使用git
1,设置git 打开webstorm软件,找到file下面的settings(设置) 打开设置对话窗,找到version control的子级目录git,路径path输入git安装目录下bin目录里的 ...
- eNSP配置静态路由
配置目标:如下拓扑结构,从CLIENT1去pingCLIENT2,ping通 拓扑结构 路由配置 配置各个路由表的核心思想是:只有这个路由表中有一个网段的网络号,才可以从这个路由器跳转到该网段,下面只 ...
- LeetCode 788. 旋转数字(Rotated Digits) 36
788. 旋转数字 788. Rotated Digits 题目描述 我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数.要求每位数字 ...
- Apache Kafka安全| Kafka的需求和组成部分
1.目标 - 卡夫卡安全 今天,在这个Kafka教程中,我们将看到Apache Kafka Security 的概念 .Kafka Security教程包括我们需要安全性的原因,详细介绍加密.有了这 ...
- [NOI2008]志愿者招募 (费用流)
大意: $n$天, 第$i$天要$a_i$个志愿者. $m$种志愿者, 每种无限多, 第$i$种工作时间$[s_i,t_i]$花费$c_i$, 求最少花费. 源点$S$连第一天, 容量$INF$ 第$ ...
- CAS 5.x搭建常见问题系列(1).未认证的授权服务
错误内容 错误信息如下: 未认证授权的服务 CAS的服务记录是空的,没有定义服务.希望通过CAS进行认证的应用程序必须在服务记录中明确定义 错误原因 CAS 5.x 默认情况下不支持HTTP的客户端接 ...
- Java电商项目,秒杀,抢购等高并发场景的具体场景和一些概念以及处理思路
这里我借鉴了网上其他大佬的观点: 一:高并发带来的挑战 原因:秒杀抢购会经常会带来每秒几万的高并发场景,为了更快的返回结果给用户. 吞吐量指标QPS(每秒处理请求数),假设一个业务请求响应耗时为100 ...
- Unity VS2017 调试外部DLL
之前写的C++ DLL VS2012 都可以附加进程的方式调试Unity中的调用 这次用了一个C# DLL VS2017 在Unity 2018上无法附加进程的方式调试 经过一番折腾, 主要是两个问题 ...
- 使用sequelize对数据库进行增删改查
由于本人对于命令比较执着,所以基本都是在命令下操作的,喜欢使用命令的可以使用Cmder,需要安装.配置的可以参考这篇文章: https://www.cnblogs.com/ziyoublog/p/10 ...
- Vue props用法详解
Vue props用法详解 组件接受的选项之一 props 是 Vue 中非常重要的一个选项.父子组件的关系可以总结为: props down, events up 父组件通过 props 向下传递数 ...