Mybatis中的OGNL使用总结

Mybatis中的OGNL使用总结

Mybatis中常用的OGNL表达式有以下:

e1 or e2

e1 and e2

e1 == e2,e1 eq e2

e1 != e2,e1 neq e2

e1 lt e2:小于

e1 lte e2:小于等于,其他gt(大于),gte(大于等于)

e1 in e2

e1 not in e2

e1 + e2,e1 * e2,e1/e2,e1 - e2,e1%e2

!e,not e:非,求反

e.method(args)调用对象方法

e.property对象属性值

e1[ e2 ]按索引取值,List,数组和Map

@class@method(args)调用类的静态方法

@class@field调用类的静态字段值

在一定意义上说,mybatis中的动态sql也是基于OGNL表达式的。其中常用的元素有如下几种:

    if
    choose(when,otherwise)
    trim
    where
    set
    foreach

OGNL在mybatis中的应用,主要有两种:

OGNL的调用静态方法的示例:

<select id="getRecentQuestionTitle" parameterType="java.lang.String" resultType="java.lang.String">  
        select title from song_question where questionState = #{value}   
        <if test="@Ognl@isSolve(value[0],0)">  
        order by questionTime desc   
        </if>  
        <if test="@Ognl@isSolve(value[0],1)">  
        order by answerTime desc   
        </if>                
        limit 0,1  
</select>  

静态方法如下:

public static boolean isSolve(Object o,String soleState){  
    if(o == null)  
        return false;  
    String str = null;  
    if(o instanceof String[]){  
        String[]objects = (String[])o;  
        str = objects[0];  
    }else if(o instanceof Character){  
        Character c = (Character) o;  
        str =  Character.toString(c);  
    }  
        if(StringUtils.equals(str, soleState))  
            return true;  
    return false;  
      
}  

如果值为0,则order by questionTime desc 根据字段questionTime排序。
如果值为1,则order by answerTime desc根据字段answerTime排序。


Mybatis中的OGNL表达式(一)
Mybatis中的OGNL表达式(二)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,876评论 0 4
  • 你是这么弯曲 横竖都在任性 凸出肚子 却把心凹了进去 你也会朦胧 是随着风的节奏 在冷艳里舞蹈 我看到你的优美 我...
    栋赵阅读 137评论 0 4
  • 店铺学习 很多人非常重要的一些能力。就是没有打造自己核心的竞争能力。 我的核心竞争力是什么呢? 有没有对这个问题进...
    ec60cc2e31e7阅读 443评论 0 0
  • “河钢集团矿业公司司家营北区分公司位于河北滦县,矿石属于鞍山式沉积变质铁矿床。该公司目前共有三个选矿系列,二个氧化...
    四方谈阅读 1,123评论 0 1
  • [英]毛姆 / 傅惟慈译 我是在剧场看戏时见到她的。她向我招了招手,我趁幕间休息的时候走了过去,在她旁边坐下。...
    云的留痕阅读 196评论 0 1