MyBatis學習(五)--Ognl表達式


概念

  OGNL是Object-Graph Navigation Language的縮寫,它是一種功能強大的表達式語言,通過它簡單一致的表達式語法,可以存取對象的任意屬性,調用對象的方法,遍歷整個對象的結構圖,實現字段類型轉化等功能。它使用相同的表達式去存取對象的屬性。這樣可以更好的取得數據。

用法

  Ognl表達式的用法與EL表達式的用法類似,作者這里就以它們作為對比進行簡述:

  EL表達式:

    是JSP中所使用的表達式;寫法:${屬性名};

    對變量的處理,采用的是字符串拼接的方式;

    如:select * from author where id=${value}

  

    讀取基本數據類型的值時,{}中只能寫 value,不能填寫其他值;

  Ognl表達式:

    是一種功能功能強大的表達式,可以存取對象的任意屬性;寫法:#{屬性名};

    對變量的處理,采用的是預編譯的方式;

    如:select * from author where id=#{id}

  

    讀取基本數據類型的值時,{}中可以使任意變量名;

  作者這里將它們的區別簡要做了一張表格,如下:

 

EL表達式

Ognl表達式

變量的處理

字符串拼接

預編譯

基本數據類型

${value}

#{任意變量名}

對象類型(pojo類型)

${屬性名}

#{屬性名}

 

${對象屬性.屬性}

#{對象屬性.屬性}

  這里再通過一個案例來看看他們的區別:

  

  

  需要注意的是:

    EL表達式:字符串拼接,接收到的內容不加任何修飾直接拼接在SQL中,可能引起SQL注入;

    Ognl表達式:預編譯,讀取表達式的值,通過preparedStatement的方式進行SQL語句的執行;

 

PS:因作者能力有限,如有誤還請諒解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM