背景
關聯起來查詢三個表的數據
步驟
- 定義接收結果的中間類
- 在 @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);
}