现在要实现两个关联表的查询
一、前端代码
1.1 分页模块
<el-pagination class="fy"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
:page-sizes="[5, 10]"
:page-size= "pageSize"
v-show="total>5"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
background style="margin-top:10px">
</el-pagination>
1.2 控制代码
<script>
import IdentityCheck from './IdentityCheck'
export default {
name: 'BUnavailable',
data: function () {
return {
account_id: '',
usertype: '',
interval: '',
total: 0,
//页面的条数,初始设置是5
pageSize: 5,
//当前页面的页数
currentPage: 1,
list: []
}
},
created () {
//页面一打开,就触发后端分页查询接口
this.$axios
.post('/showUnavailables', {
page: this.currentPage,
size: this.pageSize
})
.then(successResponse => {
if (successResponse.data.success) {
this.list = successResponse.data.data.content
this.total = successResponse.data.data.totalElements
if (this.list.length < 1) {
this.$message('查询时间段内无项目')
} else {
for (let m in this.list) {
this.$axios
.post('/lookpic', {
imgpath: this.list[m].projectdetails
})
.then(successResponse => {
if (successResponse.data.success) {
console.log(successResponse.data.data)
this.list[m].projectdetails = 'data:image/png;base64,' + successResponse.data.data.base64id
} else {
this.$message(successResponse.data.msg)
}
})
.catch(failResponse => {
})
}
}
} else {
this.$message(successResponse.data.msg)
}
})
.catch(failResponse => {
})
},
methods: {
//处理当前页面
handleCurrentChange (currentPage) {
this.getList(currentPage)
},
//处理页面条数的变化
handleSizeChange (pageSize) {
this.pageSize = pageSize
this.getList(this.currentPage)
},
//触发后端接口,查询,返回分页后的项目
getList (currentPage) {
this.currentPage = currentPage
this.$axios
.post('/showUnavailables', {
page: this.currentPage,
size: this.pageSize
})
.then(successResponse => {
if (successResponse.data.success) {
this.list = successResponse.data.data.content
this.total = successResponse.data.data.totalElements
if (this.list.length < 1) {
this.$message('查询时间段内无项目')
} else {
for (let m in this.list) {
this.$axios
.post('/lookpic', {
imgpath: this.list[m].projectdetails
})
.then(successResponse => {
if (successResponse.data.success) {
console.log(successResponse.data.data)
this.list[m].projectdetails = 'data:image/png;base64,' + successResponse.data.data.base64id
} else {
this.$message(successResponse.data.msg)
}
})
.catch(failResponse => {
})
}
}
} else {
this.$message(successResponse.data.msg)
}
})
.catch(failResponse => {
})
}
},
components: {
IdentityCheck
}
}
二、后端代码
2.1 Controller层
/**
* 查询尚不可行的项目信息
* @param json
* @return
*/
@CrossOrigin
@PostMapping(value = "/api/showUnavailables")
@ResponseBody
public Result<Page<Project_Overview>> showUnavailablesPage(@RequestBody JSONObject json) {
int page = 1, size = 5;
Page<Project_Overview> projectOverviews = null;
if (json.getInteger("page") == null || json.getInteger("size") == null) {
log.error("[SWController.showUnavailables]:json中的page或size为空");
return null;
}
page=json.getInteger("page")-1;
size=json.getInteger("size");
Page<Project_Overview> project_overviews = project_overviewService.showUnavailablesPage(page, size);
return new Result<>(project_overviews);
}
2.2 Service层
public Page<Project_Overview> showUnavailablesPage(int page,int size){
//分页的当前页和页面的条数
Pageable pageable = PageRequest.of(page, size);
//用于写数据库的筛选条件
Specification<Project_Overview> specification = new Specification<Project_Overview>() {
@Override
public Predicate toPredicate(Root<Project_Overview> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
List<Predicate> predicateList = new ArrayList<>();
predicateList.add(criteriaBuilder.equal(root.get("isacceptsw"),"无"));
Predicate[] predicates = new Predicate[predicateList.size()];
return query.where(predicateList.toArray(predicates)).getRestriction();
}
};
return project_overviewdao.findAll(specification,pageable);
}
2.3 POJO
package com.evan.wj.pojo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import javax.persistence.*;
@Entity
@Table(name = "project_overview")
@JsonIgnoreProperties({"handler", "hibernateLazyInitializer"})
@Data
public class Project_Overview {
/**
* 项目ID
**/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "project_id")
private int projectid;
/**
* 产品名称
**/
@Column(name = "project_name")
private String projectname;
/**
* 产品内容,产品结构式图片等
**/
@Column(name = "project_details")
private String projectdetails;
/**
* 需求量
**/
@Column(name = "project_sl")
private String projectsl;
/**
* Cas号
**/
@Column(name = "cas")
private String cas;
/**
* 询单单位名称
**/
@Column(name = "kh_name")
private String khname;
/**
* 询单人员姓名
**/
@Column(name = "khry_name")
private String khryname;
/**
* 询单人员身份
**/
@Column(name = "khry_type")
private String khrytype;
/**
* 询单人联系方式
**/
@Column(name = "khry_contact")
private String khrycontact;
/**
* 询单人身份是否真实
**/
@Column(name = "khry_Isreal")
private String khryisreal;
/**
* 客户类型,“企业”或“高校”
**/
@Column(name = "kh_type")
private String khtype;
/**
* 客户合作历史,“新客户”or“老客户”
**/
@Column(name = "co_history")
private String cohistory;
/**
* 是否有钱,“有钱”、“一般”、“没钱”
**/
@Column(name = "is_money")
private String ismoney;
@Column(name = "is_deal")
private String isdeal;
/**
* 有无成交机会,“有”“无”(商务人员填写)
**/
@Column(name = "is_accept_sw")
private String isacceptsw;
/**
* 备注,客户对产品纯度,货期等方面的特殊要求
**/
@Column(name = "bz")
private String bz;
@Column(name="model_name")
private String modelname;
/**
* 询单日期
**/
@Column(name = "create_date")
private java.time.LocalDateTime createdate;
/**
* 修改日期
**/
@Column(name = "update_date")
private java.time.LocalDateTime updatedate;
@Column(name = "create_name")
private String createname;
@Column(name = "update_name")
private String updatename;
@Column(name = "test_result")
private String testresult;
@OneToOne
@JoinColumn(name = "project_id")
private ProjectZt projectZt;
}
三、效果展示
Spring Boot笔记-Hibernate中@ManyToOne及@OneToOne
springboot jpa 多条件查询(多表)