IKExpressionV2.1.2快速入门
来源:互联网 发布:开个淘宝店要多少钱 编辑:程序博客网 时间:2024/05/29 04:46
1、前言
网上关于IKExpression的资料也有不少,不过基本都是V2.0的,内容基本一致,该文章不会写过多的理论性的东东,主要以示例来介绍IKExpression如何使用!也当时本人学习的笔记,方便今后翻阅。
2、如何使用
2.1 语法
- 变量名遵循Java规范
- 函数声明以$打头【$SYSDATE()】
- 日期常量以“[]”符号界定,不支持毫秒【[2016-05-22 16:40:00]】
2.2 基本应用
先看代码:
- String expression = "\"Hello \" + 用户名";
- List<Variable> varialbes = new LinkedList<Variable>();
- varialbes.add(Variable.createVariable("用户名", "ikexpression"));
- Object result = ExpressionEvaluator.evaluate(expression, varialbes);
以上是IKExpression最基本的字符串表达式执行方式。表达式需要返回一个动态的字符串,“用户名”在这里是指变量名。IKExpression就是使用java实现的插件,所以java的语法也适用IKExpression,比如表达式中的符号“+”,就是将字符串拼接组合成新的字符串。IKExpression还支持【-、×、/、 %、!、&&、||、?:】等运算符,对于&&、||、?:也有短路优先处理,另外还特有集合运算符#,#相当于集合的add方法,看代码:
- String expression = "区#市#省";
- List<Variable> varialbes = new LinkedList<Variable>();
- varialbes.add(Variable.createVariable("区", "XX区"));
- varialbes.add(Variable.createVariable("市", "XXX市"));
- varialbes.add(Variable.createVariable("省", "XXXX省"));
- Object result = ExpressionEvaluator.evaluate(expression, varialbes);
2.3 高级应用
如何将字符串当成java的方法来执行?IKExpression只需要三步轻松搞定Step1:在工程classpath目录添加IKExpression.cfg.xml配置文件【注意:该文件名是V2.1.2版本的,网上资料大多说的是V2.0,文件名是functionConfig.xml(V2.0没有使用,故未测试配置文件名是否正确,但是配置内容一致)】
- <?xml version="1.0" encoding="UTF-8"?>
- <function-configuration>
-
- <bean class="org.wltea.expression.function.SystemFunctions">
- <function name="CONTAINS" method="contains">
- <parameter-type>java.lang.String</parameter-type>
- <parameter-type>java.lang.String</parameter-type>
- </function>
- <function name="STARTSWITH" method="startsWith">
- <parameter-type>java.lang.String</parameter-type>
- <parameter-type>java.lang.String</parameter-type>
- </function>
- <function name="ENDSWITH" method="endsWith">
- <parameter-type>java.lang.String</parameter-type>
- <parameter-type>java.lang.String</parameter-type>
- </function>
- <function name="CALCDATE" method="calcDate">
- <parameter-type>java.util.Date</parameter-type>
- <parameter-type>int</parameter-type>
- <parameter-type>int</parameter-type>
- <parameter-type>int</parameter-type>
- <parameter-type>int</parameter-type>
- <parameter-type>int</parameter-type>
- <parameter-type>int</parameter-type>
- </function>
- <function name="SYSDATE" method="sysDate" />
- <function name="DAYEQUALS" method="dayEquals">
- <parameter-type>java.util.Date</parameter-type>
- <parameter-type>java.util.Date</parameter-type>
- </function>
- </bean>
-
- <bean class="****.Functions">
- <function name="test" method="test">
- <parameter-type>java.lang.String</parameter-type>
- </function>
- </bean>
- </function-configuration>
IKExpression自带函数函数名 | 参数 | 返回值类型 | 说明 | CONTAINSString, StringBoolean相当于java中的contains方法,判断字符串是否包含自字符串STARTSWITHString, StringBoolean相当于java中的startsWith,判断字符串前缀ENDSWITHString, StringBoolean同上,比较后缀CALCDATEDate, int, int, int, int, int, intDate日期计算函数
参数说明:源日期,年,月,日,时,分,秒。正数表示向后计算,负数表示向前计算
如:
$CALCDATE([2016-05-22], 2, 0, 0, 0, 0, 0)=[2018-05-22]
$CALCDATE([2016-05-22 16:40:00], 0, 0, 0, -6, -10, 0)=[2018-05-22 10:30:00]SYSDATE无Date获取当前系统时间DATEEQUALSDate, DateBoolean日期比较,忽略时分秒
[2016-05-22 16:40:00]与[2016-05-22 23:40:00]返回true
Step2:实现Step1配置文件中的Functions类及test方法,参数类型是String。
- public class Functions {
- public String test(String name) {
- return "hi, " + name;
- }
- }
Step3:编写main运行表达式
- String expression = "$test(name)";
- List<Variable> varialbes = new LinkedList<Variable>();
- varialbes.add(Variable.createVariable("name", "IKExpression"));
- Object result = ExpressionEvaluator.evaluate(expression, varialbes);
至此,IKExpression可以添加到项目中使用了。
jar包:IKExpression.2.1.2.jar