You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在QueryDSL-Web中使用Like运算符实现模糊查询?

概述

使用QueryDSL时,框架支持从请求查询字符串携带的属性自动派生查询条件,示例请求参数格式如下:

?firstname=Dave&lastname=Matthews

上述参数默认会触发等值匹配逻辑,查询firstname字段值为Dave、lastname字段值为Matthews的用户记录。

问题描述

需要在上述自动派生查询条件的机制下支持LIKE运算符,例如实现“查询姓氏包含'Matt'的用户列表”这类需求。目前可查阅到的两类实现方案均存在不足:

  • 全局字段绑定方案:将所有字段的默认匹配规则从equals替换为contains,该方案虽能实现模糊查询,但会覆盖原生的等值匹配逻辑,影响原有等值查询功能的正常使用
  • 逐字段自定义Repository方案:针对实体类每个需要模糊查询的字段单独编写自定义Repository实现,这类方案开发、维护成本较高。
当前实现情况

现有代码仅支持等值匹配查询,无法满足LIKE、CONTAINS类的模糊匹配需求,代码实现如下:

@RequestMapping(value = "/", method = RequestMethod.GET)
String index(Model model, 
        @QuerydslPredicate(root = User.class) Predicate predicate,    
        Pageable pageable) {
    model.addAttribute("users", repository.findAll(predicate, pageable));
    return "index";
}
待确认问题

已有技术讨论提到可使用Spring Data QueryDSL Value Operators库实现QueryDSL Web场景下的多运算符支持,针对该方案存在两点疑问:

  • 该方案在2022年及后续发布的新版本依赖中是否仍然有效可用?
  • 该方案是否是实现上述需求的唯一合规方案?
参考资料
  • Spring Data QueryDSL Web 支持相关教程
  • Spring Data QueryDSL 集合属性Web查询相关教程
  • Spring Data QueryDSL Value Operators 库说明文档
  • Spring Data QueryDSL Value Operators 源码仓库
  • Spring Data JPA 官方参考文档(类型安全Web查询章节)

内容的提问来源于stack exchange,提问作者KenobiBastila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:15:33