小白求助: Java 有什么方法可以做复杂条件过滤

2022 年 1 月 21 日
 slomo

先说下一些条件的情况

总的来说就是需要实现类似 sql 的效果。但是用 java 实现。 条件里的字段是可以控制住的。

举例: 创建了一个抽奖活动,这个抽奖的参与条件如下:

  1. 会员和普通用户均能参加
  2. 会员需要积分参加
  3. 普通用户需要交钱参加

如上几个条件都是通过创建活动时管理员的配置来规定的,他也可以设置会员和普通用户都交钱参加,或者直接免费参与。或者普通用户直接不能参与...

而我要做的工作就是用户带着他的身份和其他必要信息参与抽奖时,去判断他是否有资格。这个判断条件这里该怎么存储和实现比较好呢?

求解。

ps:最好还能考虑到布尔值的短路情况和前端展示

pps:如果方案真的不错,有偿

4114 次点击
所在节点    程序员
20 条回复
smartbot
2022 年 1 月 21 日
关键词: 规则引擎
wwwz
2022 年 1 月 21 日
储存 OGNL 表达式,前端展示和 OGNL 互转
ic2y
2022 年 1 月 21 日
aviator
storyxc
2022 年 1 月 21 日
一楼+1 ,一般这种复杂场景+经常变更的规则用规则引擎比较好
Tsingchengliu
2022 年 1 月 21 日
aviator 或者 groovy ,套个管理端就可以做简单的规则引擎
monetto
2022 年 1 月 21 日
1. 规则引擎
2. 责任链模式 进行 链式判断
312ybj
2022 年 1 月 21 日
规则引擎 drools
isJoey
2022 年 1 月 21 日
国产开源 iteflow 应该能满足
CoooooolFrog
2022 年 1 月 21 日
推荐 aviator ,非常好用( aviator 的作者就坐在我背后 )
cheng6563
2022 年 1 月 21 日
直接配置 SQL WHERE 完事,更进一步就是直接写 Js 或者 Groovy 脚本。
用规则引擎也行。

别想着搞个什么责任链或者流程引擎什么的然后全部图形化配置。
andy2415
2022 年 1 月 21 日
简单的规则用 Predicate 就够用了吧
themostlazyman
2022 年 1 月 21 日
JDK8 list.stream().filter
lele140
2022 年 1 月 21 日
aviator +1
beitayongguo
2022 年 1 月 21 日
都在说规则引擎~ 其实表达式引擎也可以的吧
wolfie
2022 年 1 月 21 日
spring 的 spel 也可以。

cn.hutool.extra.expression.ExpressionEngine 看实现类。
zxjunz
2022 年 1 月 21 日
@CoooooolFrog #9 牛逼
fanshaohua
2022 年 1 月 21 日
c# 有 LINQ ,Java 对应的应该是 Stream

https://putridparrot.com/blog/javas-linq-equivalent-streams/
RuLaiFo
2022 年 1 月 22 日
是单表还是多表查询。
cryboy007
2022 年 1 月 22 日
涨知识了,我们项目都是自己写用 if else 拼接.真的是又臭又长
slomo
2022 年 1 月 25 日
@CoooooolFrog 厉害了大佬,能不能请问下表达式跟对象转换有什么好的方法嘛🥺,单独表达式前端不好展示

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/829646

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX