在实现了分页查询后,我原本的项目之前的模糊查询失效,之前是传一个封装好的实体对象给后端,后端通过这个对象查询后返回结果给到前端。由于实现了分页,所以查询得到的结果也需要分页。
有个很关键的问题是分页需要传pageNum
和pageSize
这两个参数,后端@RequestBody
一次只能接收一个对象(@RequestBody
是读取的流的方式, 在取 body参数时第一个参数取到后把request.getInputStream()
关闭,一个请求中只包含一个request body)。而我要进行的查询又需要传一个对象,在走了一些弯路后想到:为什么不把pageNum和pageSize以及需要的实体整合成一个新的对象,传给后端后再分开获取值呢?这样虽然比较麻烦,但是没有其他思路我就这么试了,确实可以实现想要的多条件分页模糊查询。
后端实现
**注意:**要先导入PageHelper和Lombok插件,具体操作可以查看我的上一篇博客。
-
新建一个实体类
@Data @NoArgsConstructor public class FundPage { private String fundCode; private String fundFullName; private String custodianCode; private String fundCategory; private String needReview; private Integer pageNum; private Integer pageSize; }
-
dao层和mapper文件不需要更改,修改service层和实现类的业务函数
//原本的service层函数 List<FundInfo> getLots(FundInfo fundInfo) //改写后 PageInfo<FundInfo> getLots(FundInfo fundInfo,Integer pageNum,Integer pageSize); //service的实现类 @Override public PageInfo<FundInfo> getLots(FundInfo fundInfo,Integer pageNum,Integer pageSize) { FundInfoExample example = new FundInfoExample(); FundInfoExample.Criteria criteria = example.createCriteria(); if (fundInfo.getFundCode() != null) { criteria.andFundCodeLike("%" + fundInfo.getFundCode() + "%"); } if (fundInfo.getCustodianCode() != null) { criteria.andCustodianCodeLike("%" + fundInfo.getCustodianCode() + "%"); } if (fundInfo.getFundFullName