Mybatis中的OGNL使用總結(jié)

Mybatis中的OGNL使用總結(jié)

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)調(diào)用對象方法

e.property對象屬性值

e1[ e2 ]按索引取值,List,數(shù)組和Map

@class@method(args)調(diào)用類的靜態(tài)方法

@class@field調(diào)用類的靜態(tài)字段值

在一定意義上說,mybatis中的動態(tài)sql也是基于OGNL表達式的。其中常用的元素有如下幾種:

    if
    choose(when,otherwise)
    trim
    where
    set
    foreach

OGNL在mybatis中的應(yīng)用,主要有兩種:

OGNL的調(diào)用靜態(tài)方法的示例:

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

靜態(tài)方法如下:

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 根據(jù)字段questionTime排序。
如果值為1,則order by answerTime desc根據(jù)字段answerTime排序。


Mybatis中的OGNL表達式(一)
Mybatis中的OGNL表達式(二)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 6,280評論 0 4
  • 你是這么彎曲 橫豎都在任性 凸出肚子 卻把心凹了進去 你也會朦朧 是隨著風的節(jié)奏 在冷艷里舞蹈 我看到你的優(yōu)美 我...
    棟趙閱讀 169評論 0 4
  • 店鋪學習 很多人非常重要的一些能力。就是沒有打造自己核心的競爭能力。 我的核心競爭力是什么呢? 有沒有對這個問題進...
    ec60cc2e31e7閱讀 487評論 0 0
  • “河鋼集團礦業(yè)公司司家營北區(qū)分公司位于河北灤縣,礦石屬于鞍山式沉積變質(zhì)鐵礦床。該公司目前共有三個選礦系列,二個氧化...
    四方談閱讀 1,160評論 0 1
  • [英]毛姆 / 傅惟慈譯 我是在劇場看戲時見到她的。她向我招了招手,我趁幕間休息的時候走了過去,在她旁邊坐下。...
    云的留痕閱讀 251評論 0 1

友情鏈接更多精彩內(nèi)容