当前位置: 代码迷 >> 综合 >> JPA多条件查询(精确查询、模糊查询、时间段查询)重写Specification的toPredicate方法
  详细解决方案

JPA多条件查询(精确查询、模糊查询、时间段查询)重写Specification的toPredicate方法

热度:32   发布时间:2023-10-16 10:49:20.0

实现

   /*** 分页查询公司拥有的项目的列表* @param companyId* @return*/public Page<Project> getListByCompanyPage(PageFilter pageFilter,String companyId,Date beginDate,Date endDate,String projectName) {Page<Project> l=projectRepository.findAll(new Specification<Project>() {@Overridepublic Predicate toPredicate(Root<Project> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder cBuilder) {//开始,定义一个PredicatePredicate p = cBuilder.conjunction();/**精确查询**/p = cBuilder.and(p, cBuilder.equal(root.get("companyId"), companyId));/**模糊查询**/p = cBuilder.and(p, cBuilder.like(root.get("projectName"), "%"+projectName+"%"));/**时间段查询**///大于等于开始时间p = cBuilder.and(p, cBuilder.greaterThanOrEqualTo(root.get("createTime"), beginDate));//小于等于结束时间p = cBuilder.and(p, cBuilder.lessThanOrEqualTo(root.get("createTime"), endDate));return p;}}, pageFilter.getPageRequest());return l;}