V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DimitriYoon
V2EX  ›  程序员

MybatisPlus 用什么方式实现多字段模糊查询比较好?

  •  
  •   DimitriYoon · 2023-09-17 16:03:56 +08:00 · 1721 次点击
    这是一个创建于 437 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一个实体类需要实现多个字段的模糊查询,字段的数量不是一定的,想要在实体类传进来的时候,对于不为空的字段做模糊查询,有没有什么比较好不怎么屎的实现方法?

    6 条回复    2023-09-17 21:18:35 +08:00
    ikas
        1
    ikas  
       2023-09-17 16:15:40 +08:00
    自己扩展一个 query 方法注入到 mybatisplus 中或者写一个 SelectProvider
    Vkery
        2
    Vkery  
       2023-09-17 16:32:43 +08:00
    自己写一个工具类,可以通过反射将实体类转为 Query
    oneisall8955
        3
    oneisall8955  
       2023-09-17 16:52:58 +08:00 via Android
    例如?给个例子
    Foxkeh
        4
    Foxkeh  
       2023-09-17 19:47:09 +08:00
    官方的就支持, 比如查询条件拼接的时候
    eq(StringUtils.hasText(Order::getStatus, req.getStatus())
    改为
    eq(StringUtils.hasText(req.getStatus()), Order::getStatus, req.getStatus())
    Foxkeh
        5
    Foxkeh  
       2023-09-17 19:48:21 +08:00
    @Foxkeh 不好意思粘贴错了, 是类似这样改
    eq(Order::getStatus, req.getStatus())
    改为
    eq(StringUtils.hasText(req.getStatus()), Order::getStatus, req.getStatus())
    wellerman
        6
    wellerman  
       2023-09-17 21:18:35 +08:00
    10 个字段内列出来也不是什么问题:
    public LambdaQuery<T> eqIfPresent(SFunction<T, ?> column, Object val) {
    if (val != null) {
    return (LambdaQuery<T>) super.eq(column, val);
    }
    return typedThis;
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3201 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 13:11 · PVG 21:11 · LAX 05:11 · JFK 08:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.