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