摘要:支持的語法用于解析靜態方法解析表達式在映射語句中可以支持引入以下幾種方式示例變量屬性靜態方法無參數待參數靜態屬性數組索引集合構造方法的靜態方法可以省略的編寫,方法的默認是包下的靜態方法可以省略的編寫,類默認的是語法中通過兩個字符,前者
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
變量
id =${id}
屬性
id = ${user.id}
靜態方法(public)- 無參數
id="${@cn.followtry.mybatis.bean.User@name()}"
待參數
id="${@org.apache.commons.lang3.math.NumberUtils@isNumber("abcd")}"
靜態屬性(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.lang包下的靜態方法
id = ${@Integer@parseInt("654")} 可以省略package的編寫,類默認的package是java.lang
${}語法中通過兩個@字符,前者定位到Java類,后者定位到類中的方法或屬性
這里只列出的其中一部分,對于Mybatis支持的${}語法,可以參見OGNL語法手冊。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/67973.html
摘要:現象項目組一妹子程序員求助,說有,有一個值明明設置的是,但是存到數據庫里面卻會自動變成,嘗試了各種調整也找不原因,都快急瘋了我以前確實沒有研究過源碼,本著專研問題的精神,決定通過對一探究竟。 現象 ??項目組一妹子程序員求助,說mybatis有bug,有一個值明明設置的是A.prop1=XXX,但是存到數據庫里面卻會自動變成A.prop1=true,嘗試了各種調整也找不原因,都快急瘋了...
摘要:核心包包名稱包內內容簡介注解目錄。如等類的實例反射生成工具目錄主要是注解,和的構造器及轉換器內部緩存接口。等默認的游標處理類數據源工廠類及實現。數據源實現類自定義的三個異常類。。都繼承自執行器相關包。為后續分析源碼打下基礎。 Mybatis核心包 showImg(https://segmentfault.com/img/remote/1460000018747383?w=746&h=1...
摘要:原因就是傳入的和原有的單引號,正好組成了,而后面恒等于,所以等于對這個庫執行了查所有的操作。類比的執行流程和原有的我們使用的方法就是。可以理解為就是用來解析定制的符號的語句。后續的流程,就和正常的流程一致了。 前言 在JDBC中,主要使用的是兩種語句,一種是支持參數化和預編譯的PrepareStatement,能夠支持原生的Sql,也支持設置占位符的方式,參數化輸入的參數,防止Sql注...
摘要:執行沒有,批處理不支持,將所有都添加到批處理中,等待統一執行,它緩存了多個對象,每個對象都是完畢后,等待逐一執行批處理。 Mybatis常見面試題 #{}和${}的區別是什么? #{}和${}的區別是什么? 在Mybatis中,有兩種占位符 #{}解析傳遞進來的參數數據 ${}對傳遞進來的參數原樣拼接在SQL中 #{}是預編譯處理,${}是字符串替換。 使用#{}可以有效的防止...
閱讀 3023·2023-04-26 00:32
閱讀 507·2019-08-30 15:52
閱讀 2114·2019-08-30 15:52
閱讀 3356·2019-08-30 15:44
閱讀 3288·2019-08-30 14:09
閱讀 1423·2019-08-29 15:15
閱讀 3401·2019-08-28 18:12
閱讀 1084·2019-08-26 13:55