OGNL 表达式 您所在的位置:网站首页 ognl表达式语法 OGNL 表达式

OGNL 表达式

2023-08-26 22:06| 来源: 网络整理| 查看: 265

OGNL 表达式 1. 前言

MyBatis 的动态 SQL 广泛应用到了OGNL 表达式,OGNL 表达式可以灵活的组装 SQL 语句,从而完成更多的功能。OGNL 易学易用,与 Java 代码几乎一致,本小节我们将系统的介绍 OGNL 表达式在 MyBatis 中的使用。

2. 定义

慕课解释:OGNL 全称 Object-Graph Navigation Language,是 Java 中的一个开源的表达式语言,用于访问对象数据。

3. 介绍 3.1 实例

OGNL 最常用于 if 标签中,用于判断条件是否满足,如下:

AND age = #{age}

if 标签的 test 属性就是个典型的 OGNL 表达式。age != null表示当 age 不为 null 的时候 if 成立,则动态的向 SQL 中插入标签内的 SQL 代码段。

3.2 常见的 OGNL 表达式

在 MyBatis 中常见的 OGNL 表达式如下:

e1 or e2:或关系 e1 and e2:与关系 e1 == e2 或者 e1 eq e2:相等 e1 != e2 或者 e1 neq e2:不等 e1 lt e2 ;e1 < e2;e1 gt e2;e1 > e2;e1 lte e2;e1 = e2:比较关系 e1 + e2;e1 - e2;e1 * e2;e1 / e2;e1 % e2:运算关系 !e 或者 not e:非,取反 e.method(args):调用对象方法 e.property:访问属性值 e1[e2]:访问数组、链表(e2 为序号)或者 Map(e2 为键值)

其中 1~4 以及 9~10 都是特别常用的几种情况,而其它的情况不利于 SQL 的维护,因此并不常见。

TIPS: 提示, 如果你熟悉 Python 的话,会发现 OGNL 表达式完全就是在写 Python。

4. 实践

下面我们就来以实例来看一看 OGNL 表达式。

有一个名为 pedro 的 User 对象,如下:

User pedro = new User(); pedro.setUsername("pedro"); pedro.setTags(Arrays.asList("admin", "man")); pedro.setAge(23); 4.1 访问属性

访问用户的 username 属性,OGNL 表达式为pedro.username,结果为:

# pedro.username pedro 4.2 访问列表

访问用户的第一个标签,OGNL 表达式为pedro.tags[0],结果为:

# pedro.tags[0] admin 4.3 比较

比较用户标签长度是否大于 1,OGNL 表达式为pedro.tags[0],结果为:

# pedro.tags.size > 1 true 4.4 运算

用户年龄加上一个整数 22,OGNL 表达式为pedro.age + 22,结果为:

# pedro.age + 22 45 4.5 方法调用

将用户年龄全部大写,OGNL 表达式为pedro.username.toUpperCase,结果为:

# pedro.username.toUpperCase PEDRO 5. 小结 OGNL 表达式是 MyBatis 动态 SQL 的核心,小巧精致却功能强大,易学易用。 划线 写笔记 复制

0/1000



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有