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#callStaticMethod

在sql映射语句中可以支持引入以下几种方式

示例SQL

<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 = ${@@parseInt("654")}
             and id='${@cn.followtry.mybatis.bean.User@name()}'
             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()}'
  • 静态属性(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类,后者定位到类中的方法或属性
这里只列出的其中一部分,对于Mybatis支持的${}语法,可以参见OGNL语法手册。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值