IKExpression
import java.util.ArrayList; import java.util.List;
import org.wltea.expression.ExpressionEvaluator; import org.wltea.expression.datameta.Variable;
import pojo.Admin; import pojo.User;
public class HelloWord { /** * 连接 / private static String CONNECT = " + " "+"; /* * 连接中的= / private static String CONNECT_EQUal = "+"="+"; /* * 连接中的and / private static String CONNECT_AND = "+ " "+"and" +" "+"; /* * SQL左边部分 */ private static String EXP_USER = ""select * from user where "";
public static void main(String[] args) {
//组装字符串数组(Key)
User user = new User("zhangsan", 123);//返回一个对象
//返回表达式
Admin admin = new Admin("username", "userId");
String str = CreateExpression(admin, user);
//其中result就是返回的表达式
System.out.println("表达式: " + str);
}
/**
* 组装表达式
* @param arguement
* @param arguement1
* @return
*/
private static String CreateExpression(Admin admin, User user) {
//给表达式中的变量key和value付上下文的值
List<Variable> variables = new ArrayList<>();
EXP_USER = EXP_USER + CONNECT;
EXP_USER = EXP_USER + admin.getUserId().toString();//key1
variables.add(Variable.createVariable(admin.getUserId().toString(), admin.getUserId().toString()));//arg对应表达式中的arg,字符串数组跟上面定义的一样
EXP_USER = EXP_USER + CONNECT_EQUal;
EXP_USER = EXP_USER + user.getUserId().toString();//value1
variables.add(Variable.createVariable(user.getUserId().toString(), user.getUserId().toString()));//value对应表达式中的value,字符串数组跟定义上面的一样
EXP_USER = EXP_USER + CONNECT_AND;
EXP_USER = EXP_USER + admin.getUsername().toString();//key2
variables.add(Variable.createVariable(admin.getUsername().toString(), admin.getUsername().toString()));//arg对应表达式中的arg,字符串数组跟上面定义的一样
EXP_USER = EXP_USER + CONNECT;
EXP_USER = EXP_USER + user.getUsername().toString();//value2
variables.add(Variable.createVariable(user.getUsername().toString(), user.getUsername().toString()));//value对应表达式中的value,字符串数组跟定义上面的一样
//执行表达式
Object result = ExpressionEvaluator.evaluate(EXP_USER, variables);
return result.toString();
}
}