MyBatis支持的OGNL語法

Mybatis支持OGNL的語法

OgnlCache

用於解析靜態方法
org.apache.ibatis.scripting.xmltags.TextSqlNode.BindingTokenParser#handleToken
org.apache.ibatis.scripting.xmltags.OgnlCache#getValue
org.apache.ibatis.scripting.xmltags.OgnlCache#parseExpression解析表達式
org.apache.ibatis.ognl.Ognl#parseExpression
org.apache.ibatis.ognl.OgnlParser#staticReference
org.apache.ibatis.ognl.OgnlParser#staticMethodCall
org.apache.ibatis.ognl.OgnlRuntime#callStaticMethodjava

在sql映射語句中能夠支持引入如下幾種方式sql

示例SQLapache

<select id="getUserById" resultMap="BaseResultMap">
       select * from user
       <if test="id != null">
       <where>
             name = #{name}
             and id =${id}
             and id = ${user.id}
             and id = ${@@abs(-12345678)}
             and id = ${@Integer@parseInt("654")}
             and id='${@cn.followtry.mybatis.bean.User@name()}'
             and id='${@org.apache.commons.lang3.math.NumberUtils@isNumber("sdfghjk")}'
             and id='${new cn.followtry.mybatis.bean.User()}'
             and id=${@cn.followtry.mybatis.bean.User@haha}
             and id='${@cn.followtry.mybatis.bean.User@arr[1]}'
             and id='${@cn.followtry.mybatis.bean.User@list[1]}'
             and id='${@cn.followtry.mybatis.bean.User@map.get("123")}'
             and id='${@cn.followtry.mybatis.bean.CodeTypeEnum@THREE.ordinal()}'
         </where>
         </if>
       limit 100
    </select>
  • 變量
    id =${id}
  • 屬性
    id = ${user.id}
  • 靜態方法(public)- 無參數
    id='${@cn.followtry.mybatis.bean.User@name()}'
  • 待參數
    id='${@org.apache.commons.lang3.math.NumberUtils@isNumber("abcd")}'
  • 靜態屬性(public)
    id=${@cn.followtry.mybatis.bean.User@aaa}
  • 數組索引
    id='${@cn.followtry.mybatis.bean.User@arr[1]}'
  • 集合
    '${@cn.followtry.mybatis.bean.User@list[1]}'
  • Map
    id='${@cn.followtry.mybatis.bean.User@map.get("123")}'
    id='${@cn.followtry.mybatis.bean.User@map}'
  • Enum

    id=${@cn.followtry.mybatis.bean.CodeTypeEnum@THREE.ordinal()}數組

  • 構造方法
    id='${new cn.followtry.mybatis.bean.User()}'
  • java.lang.Math的靜態方法
    id = ${@@abs(-12345678)} 能夠省略class的編寫,方法的默認class是java.lang.Math
  • java.lang包下的靜態方法
    id = ${@Integer@parseInt("654")} 能夠省略package的編寫,類默認的package是java.lang

${}語法中經過兩個@字符,前者定位到Java類,後者定位到類中的方法或屬性
這裏只列出的其中一部分,對於Mybatis支持的${}語法,能夠參見OGNL語法手冊。mybatis

相關文章
相關標籤/搜索