• MyBatis学习(五)--Ognl表达式


    概念

      OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。这样可以更好的取得数据。

    用法

      Ognl表达式的用法与EL表达式的用法类似,作者这里就以它们作为对比进行简述:

      EL表达式:

        是JSP中所使用的表达式;写法:${属性名};

        对变量的处理,采用的是字符串拼接的方式;

        如:select * from author where id=${value}

      

        读取基本数据类型的值时,{}中只能写 value,不能填写其他值;

      Ognl表达式:

        是一种功能功能强大的表达式,可以存取对象的任意属性;写法:#{属性名};

        对变量的处理,采用的是预编译的方式;

        如:select * from author where id=#{id}

      

        读取基本数据类型的值时,{}中可以使任意变量名;

      作者这里将它们的区别简要做了一张表格,如下:

     

    EL表达式

    Ognl表达式

    变量的处理

    字符串拼接

    预编译

    基本数据类型

    ${value}

    #{任意变量名}

    对象类型(pojo类型)

    ${属性名}

    #{属性名}

     

    ${对象属性.属性}

    #{对象属性.属性}

      这里再通过一个案例来看看他们的区别:

      

      

      需要注意的是:

        EL表达式:字符串拼接,接收到的内容不加任何修饰直接拼接在SQL中,可能引起SQL注入;

        Ognl表达式:预编译,读取表达式的值,通过preparedStatement的方式进行SQL语句的执行;

    PS:因作者能力有限,如有误还请谅解

  • 相关阅读:
    Java面向对象之封装静态
    分布式平台Spark环境的搭建
    高斯混合模型
    异常排除: 调用方未由服务进行身份验证
    HttpClient介绍和简单使用流程
    阿里短信服务的使用流程
    笔记工具选择
    特效图文制作
    语言基础(23):智能指针
    无线通信基础(一):无线网络演进
  • 原文地址:https://www.cnblogs.com/WHL5/p/8686429.html
Copyright © 2020-2023  润新知