Spring 基本表达式

版权声明:转载请随意! https://blog.csdn.net/qq_41723615/article/details/89181689

基本表达式

测试用例:

public class TestELSimple {

	 public static void main(String[] args) {
            ExpressionParser parpser = new SpelExpressionParser();
            Expression exp = parpser.parseExpression("'hello ' + 'world'");
            EvaluationContext context = new StandardEvaluationContext();
            System.out.println(exp.getValue(context));
	 }
}

1.字面表达式

No 表达式 范例 计算结果
1
 
字符串 Expression exp = parpser.parseExpression("'hello ' + 'world'"); hello world
Expression exp = parpser.parseExpression("\"hello \" + \"world\"" ); hello world
2 数值型 Expression exp = parpser.parseExpression("1" ); 1
Expression exp = parpser.parseExpression("1.2" ); 1.2

Expression exp = parpser.parseExpression("1.2E10" );

System.out.println(exp.getValue(context,long.class));

12000000000
3. 布尔型 Expression exp = parpser.parseExpression("true"); true
4. null类型 Expression exp = parpser.parseExpression("null"); null

2.数学表达式

No 表达式 范例 计算结果
1 四则 Expression exp = parpser.parseExpression("1 + 2 * 3 / 5"); 2
2. 求模 Expression exp = parpser.parseExpression("10 % 3"); 1
Expression exp = parpser.parseExpression("10 MOD  3"); 1
3. 幂运算 Expression exp = parpser.parseExpression("2 ^ 3"); 8
4. 除法 Expression exp = parpser.parseExpression("10 / 2"); 5
Expression exp = parpser.parseExpression("10 DIV 2"); 5

3.关系表达式

No 表达式 范例 计算结果
1 等于 Expression exp = parpser.parseExpression("1 == 2"); false
Expression exp = parpser.parseExpression("1 EQ 1"); true
2. 不等于 Expression exp = parpser.parseExpression("1 != 2"); true
Expression exp = parpser.parseExpression("1 NE 1"); false
3. 大于 Expression exp = parpser.parseExpression("10 > 2"); true
Expression exp = parpser.parseExpression("10 GT 2"); true
4. 大于等于 Expression exp = parpser.parseExpression("10 >= 2"); true
Expression exp = parpser.parseExpression("10 GE 2"); true
5 小于 Expression exp = parpser.parseExpression("10 < 2"); false
Expression exp = parpser.parseExpression("10 LT 2"); false
6 小于等于 Expression exp = parpser.parseExpression("10 <= 2"); false
Expression exp = parpser.parseExpression("10 LE 2"); false
7. 区间 Expression exp = parpser.parseExpression("10 BETWEEN {5,20}"); false

4.逻辑表达式

逻辑表达式:与、或、非

No 表达式 范例 计算结果
1. 与操作 Expression exp = parpser.parseExpression("'a' == 'a' && 10 < 5"); false
Expression exp = parpser.parseExpression("'a' == 'a' AND 10 < 5"); false
2 或操作 Expression exp = parpser.parseExpression("'a' == 'a' || 10 < 5"); true
Expression exp = parpser.parseExpression("'a' == 'a' OR 10 < 5"); true
3 非操作 Expression exp = parpser.parseExpression("'a' == 'a' AND !(10 < 5)"); true
 Expression exp = parpser.parseExpression("'a' == 'a' AND NOT(10 < 5)"); true

5.字符串操作

在String类中所有的操作方法都是在开发之中最为常用的。

No 表达式 范例 计算结果
1 连接 Expression exp = parpser.parseExpression("‘hello ’.concat('world')"); hello world
2 取内容 Expression exp = parpser.parseExpression("'hello'[1]"); e
3 替换 Expression exp = parpser.parseExpression("'hello'.replaceAll('l','_')"); he__o

只要是String类的操作方法记熟练了,那么基本上这些操作都可以直接在表达式之中直接使用。

6.三目运算符

所有的开发之中三目的重要性是不言而喻的,使用三目可以节约代码空间。

No 表达式 范例 计算结果
1 基础三目 Expression exp = parpser.parseExpression("1 > 2 ? 'halo' : \"world\""); world
2 null处理 Expression exp = parpser.parseExpression("null == null ? 'halo' : \"world\""); halo
Expression exp = parpser.parseExpression("null ?: \"world\""); world(将null作为了false)
3 true操作 Expression exp = parpser.parseExpression("true ? 'halo' : \"world\""); halo
Expression exp = parpser.parseExpression("true ?: \"world\""); true

7.正则运算

理论上而言,正则运算应该属于String类中的操作,但是由于正则比较重要,所以将其拿出。

No 表达式 范例 计算结果
1 正则 Expression exp = parpser.parseExpression("'100' matches '\\d{3}'"); true
2 Expression exp = parpser.parseExpression("'100'.matches ('\\d{3}')"); true

使用那种方式都是表示正则的操作。

8.括号表达式

利用括号表达式可以实现优先级的变更操作。

No 表达式 范例 计算结果
1 () Expression exp = parpser.parseExpression("((1 + 2) * 5) / 3"); 5

括号在表达式操作之中也是经常使用到的概念。

猜你喜欢

转载自blog.csdn.net/qq_41723615/article/details/89181689