java,基于Spring Data JPA的动态查询实现模糊搜索,多条件使用空格隔开。无分页。hibernate

    @GetMapping(path = "/like")
    @ApiOperation(value = "模糊查找表", nickname = "findAllByQuery")
    public List<MedicalInsuranceDirectory> findAllByQuery(@RequestParam String query) {
        return medicalinsureFileService.findAllByQuery(query);

    }

          如果想为空查全部则增加判断即可。

         我这里不能为空。

Service层

/**
     * 动态查询医保文件
     */
    @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);

}

空格隔开查询。前端进行分页。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值