Spring SqEl表达式 自动匹配参数并得出结果

10 篇文章 0 订阅
10 篇文章 0 订阅

一、前言

        SpEL(Spring Expression Language),即Spring表达式语言,是比JSP的EL更强大的一种表达式语言。为什么要总结SpEL,因为它可以在运行时查询和操作数据,尤其是数组列表型数据,因此可以缩减代码量,优化代码结构。

二、SpEL支持的运算符号

  • 算术运算符:+,-,*,/,%,^  (加号也可以用作字符串连接)
  • 比较运算符:< ,> , == , >= , <= , lt , gt , eg , le , ge
  • 逻辑运算符:and , or ,not , |
  • if-else 运算符
  • 正则表达式

三、Expression​​​​​​

    @Test
    void testSqEL() {

        //创建表达式列表
        ArrayList<String> list = new ArrayList<>();
        list.add("#A == 1");
        list.add("#B == 1");
        list.add("#C == 1 && #D == 1");
        list.add("#B == 1 && #D == 1");

        //创建参数map
        HashMap<String, Object> map = new HashMap<>();
        map.put("A", 1);
        map.put("B", 2);
        map.put("C", 1);
        map.put("D", 1);

        System.out.print("参数值:");
        System.out.println(map.toString());

        //创建ExpressionParser解析表达式
        ExpressionParser parser = new SpelExpressionParser();
        //创建一个虚拟的容器EvaluationContext
        StandardEvaluationContext context = new StandardEvaluationContext();
        for (Map.Entry e : map.entrySet()
        ) {
            String key = (String) e.getKey();
            Integer value = (Integer) e.getValue();
            //向容器内添加变量
            context.setVariable(key, value);
        }
        list.stream().forEach(expression -> {
            System.out.print("expression : " + expression);
            //getValue有参数context,从新的容器中根据SpEL表达式获取所需的值
            Boolean flag = parser.parseExpression(expression).getValue(context, Boolean.class);
            System.out.println("\t结果:" + flag);
        });
    }

四、结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值