OGNL表达式(Object Graphic Navigation Language)
一、原生OGNL表达式
1、表达式
ONGL表达式执行的所有操作都是根据表达式解析得到的。
例如:
- “对象名.方法名”表示调用指定对象的指定方法;
- “@[类的完全限定名]@[静态方法或者静态字段]”表示调用指定类的静态方法或访问静态字段;
- OGNL表达式还可以完成变量赋值、操作集合等操作。
2、 root对象
OGNL表达式指定了具体的操作,而root对象指定了需要操作的对象。
###3、OgnlContext(上下文对象)
OgnaContext类实现了Map接口,所以OgnaContext对象中可以存放除了root对象之外的其他对象。
- 使用OGNL表达式操作非root对象时,需要使用#前缀,而操作root对象则不需要使用#前缀
二、Mybatis的ONGL表达式
1、OgnlCache
Mybatis为了提升OGNL表达式的性能,通过OgnlCache中的expressionCache(静态成员,ConcurrentHashMap<String, Object>)来对解析后的OGNL表达式进行缓存。
/**
* ognl表达式缓