赞
踩
- @GetMapping(path = "/like")
- @ApiOperation(value = "模糊查找表", nickname = "findAllByQuery")
- public List<MedicalInsuranceDirectory> findAllByQuery(@RequestParam String query) {
- return medicalinsureFileService.findAllByQuery(query);
-
- }
如果想为空查全部则增加判断即可。
我这里不能为空。
- /**
- * 动态查询医保文件
- */
- @Override
- public List<MedicalInsuranceDirectory> findAllByQuery(String params) {
- List<String> paramsList = Arrays.asList(params.trim().split(" "));
- //动态查询
- Specification querySpecifi = new Specification<Map<String, String>>() {
- @Override
- public Predicate toPredicate(Root<Map<String, String>> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
- List<Predicate> predicates = new ArrayList<>();
- predicates.add(criteriaBuilder.ge(root.get("id"), 10000L));
- paramsList.forEach(p -> {
- predicates.add(criteriaBuilder.like(root.get("params"), "%" + p.toUpperCase() + "%"));
- });
-
- return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
- }
- };
- List<MedicalInsuranceDirectory> chineseMedicineTabletList = medicalInsuranceDirectoryRepository.findAll(querySpecifi);
- return chineseMedicineTabletList;
- }
首先将params字符串的前后空格去除,然后使用空格作为分隔符将其拆分成多个子字符串。这些子字符串被存储在一个列表paramsList中。
使用Specification接口创建一个动态查询。这是Spring Data JPA提供的一种方式,用于在运行时构建查询条件。
在toPredicate方法中,我们定义了查询的条件:
a. 创建一个空的谓词列表predicates。
b. 添加一个查询条件,表示字段id的值应该大于或等于10000。
c. 对于paramsList中的每一个元素,都添加一个模糊查询条件,表示字段params的值应该包含这个元素(不区分大小写)。
使用上面构建的查询条件,通过medicalInsuranceDirectoryRepository的findAll方法执行查询,并将结果存储到chineseMedicineTabletList列表中。
返回查询到的医保文件列表。
Repository层
- /**
- * @author: Yz
- * @Description:
- * @create: 2023-07-02
- **/
- @Repository
- public interface MedicalInsuranceDirectoryRepository extends JpaRepository<MedicalInsuranceDirectory, Long>, BaseRepository<MedicalInsuranceDirectory>, JpaSpecificationExecutor<MedicalInsuranceDirectory> {
-
- List<MedicalInsuranceDirectory> findAll(Specification querySpecifi);
-
- }
空格隔开查询。前端进行分页。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。