说,我有具有名称,年龄和薪水属性的Emp对象列表。
List<Emp> empObj = readEmpDetails();
Run Code Online (Sandbox Code Playgroud)
保留来自DB的过滤条件或从平面文件读取。但是语法如下格式。
name contains mike
age gt 100
Run Code Online (Sandbox Code Playgroud)
如何将上述条件列表转换为Java表达式。需要针对我们从数据库源读取的empObj执行此条件。我怎样才能做到这一点 ?请分享您的经验。
您可以使用Spring Spel(org.springframework.expression.ExpressionParser):
public static void main(String[] args) {
List<Emp> emp = Arrays.asList(new Emp("Ann", 25, 1000L)
,new Emp("John", 40, 2000L)
,new Emp("Alex", 60, 3000L));
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("age gt 30");
emp.stream()
.filter(emp1 -> exp.getValue(emp1, Boolean.class))
.forEach(emp1 -> System.out.println(emp1.getName() + " " + emp1.getAge()));
}
Run Code Online (Sandbox Code Playgroud)
输出:
John 40
Alex 60
Run Code Online (Sandbox Code Playgroud)
文字和操作的类型为:
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |