mongoTemplate 多条件分页查询
1.controller
@PostMapping("/limitfind")
public LimitBean LimitFind(String woNo, String supplierNum, String ipoNo, Integer currentPage, Integer pageSize ){
System.out.println("----------------wono:"+woNo);
LimitBean limitBean = produceService.LimitFind(woNo, supplierNum, ipoNo, currentPage, pageSize);
if(limitBean!=null){
return limitBean;
}
return null;
}
这里单纯的调用打印了一下没任何东西
2.service
//查询总记录数
public int getCount(String woNo, String supplierNum, String ipoNo, String collectionName){
//写条件
Query query = new Query(Criteria.where("woNo").is(woNo)
.and("supplierNum").is(supplierNum)
.and("ipoNo").is(ipoNo));
/* Criteria criteria = new Criteria();
criteria.where("woNO").is(woNo)
.and("supplierNum").is(supplierNum)
.and("ipoNo").is(ipoNo);
query.addCriteria(criteria);*/
//请求总记录数
int count = (int) mongoTemplate.count(query,ProduceBean.class,collectionName);
return count;
}
这里我自己new了一个 Criteria不行 打断点看的时候没赋值成功,没有深究啥原因,本来是cv了大佬们的博客的代码发现不太行就修改成了现在这样写的就OK了
//分页查询
public LimitBean LimitFind(String woNo, String supplierNum, String ipoNo, int currentPage, int pageSize) {
try {
//放入条件
Query query = new Query(Criteria.where("woNo").is(woNo)
.and("supplierNum").is(supplierNum)
.and("ipoNo").is(ipoNo))
//设置起始参数
.skip((currentPage - 1) * pageSize)
//设置查询条数
.limit(pageSize);
//设置起始数
//query.skip((currentPage - 1) * pageSize);
//设置查询条数
//query.limit(pageSize);
//查询当前页数据集合
List<ProduceBean> produceBeansList = mongoTemplate.find(query
,ProduceBean.class,"coil_is");
for (ProduceBean produceBean : produceBeansList) {
System.out.println("--------ipono:"+produceBean.getIpoNo());
}
//查询总记录数
int count = getCount(woNo,supplierNum,ipoNo,"coil_is");
System.out.println("------------------总个数:"+count);
//创建分页实体对象
LimitBean limitBean = new LimitBean();
//添加每页的集合、数据总条数、总页数
limitBean.setProduceList(produceBeansList);
limitBean.setCount(count);
limitBean.setTotal(count % pageSize == 0 ? count /pageSize : count / pageSize + 1);
return limitBean;
}catch (Exception o){
//打印异常
System.out.println(o);
}
return null;
}
3.实体类
@Data
public class LimitBean {
//总条数
private Integer total;
//总条数
private Integer count;
//当前页
//private Integer currentPage;
//每页显示数
//private Integer pageSize;
//分页数据
private List<ProduceBean> produceList;
}
@Data
public class ProduceBean {
private String _id;
private String woNo;
private String supplierNum;
private String ipoNo;
private List<String> list;
}