用於解析靜態方法
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}
id='${@cn.followtry.mybatis.bean.User@name()}'
id='${@org.apache.commons.lang3.math.NumberUtils@isNumber("abcd")}'
id=${@cn.followtry.mybatis.bean.User@aaa}
id='${@cn.followtry.mybatis.bean.User@arr[1]}'
'${@cn.followtry.mybatis.bean.User@list[1]}'
id='${@cn.followtry.mybatis.bean.User@map.get("123")}'
id='${@cn.followtry.mybatis.bean.User@map}'
id=${@cn.followtry.mybatis.bean.CodeTypeEnum@THREE.ordinal()}
數組
id='${new cn.followtry.mybatis.bean.User()}'
id = ${@@abs(-12345678)}
能夠省略class的編寫,方法的默認class是java.lang.Mathid = ${@Integer@parseInt("654")}
能夠省略package的編寫,類默認的package是java.lang${}
語法中經過兩個@
字符,前者定位到Java類,後者定位到類中的方法或屬性
這裏只列出的其中一部分,對於Mybatis支持的${}
語法,能夠參見OGNL語法手冊。mybatis