Mybatis與iBatis的主要差異對比

Mybatis與iBatis的主要差異對比

他們都是優(yōu)秀的持久層框架皇耗,MyBatis是現在最常用的持久層框架,可以動態(tài)地拼接sql語句揍很,非常人性化郎楼,更適合邏輯復雜的sql万伤;iBatis就是MyBatis前身,他們有很多相似的地方箭启,今天主要講一下sqlMap里面的變化壕翩。

1. 傳入參數

iBatis是parameterClass,而MyBatis是可以不寫的傅寡,也可以用parameterType;parameterClass放妈,而MyBatis是可以不寫的,也可以用parameterType;

iBatis的傳出參數關鍵字是:resultClass荐操,而MyBatis是resultMap芜抒。

iBatis: <select id="selectDeviceByWhere" parameterClass="Map" resultClass="BaseResultMap"> </select>

MyBatis:<select id="selectDeviceByWhere" parameterType="Map" resultMap="BaseResultMap"> </select>

2. 接收參數

IBatis是使用# #和$ KaTeX parse error: Expected 'EOF', got '#' at position 23: …使用方法等同于MyBatis;#? #=#{ }, = =={ } ,解釋一下#和KaTeX parse error: Expected 'EOF', got '#' at position 5: 的區(qū)別托启,#?字符串處理宅倒,加單引號,可以一定…直接使用屯耸,當傳入的是數字時拐迁,用#會進行隱式轉換為字符串,耗性能疗绣。IBatis是使用# #和$ KaTeX parse error: Expected 'EOF', got '#' at position 23: …使用方法等同于MyBatis;#? #=#{ }, = =={ } 线召,解釋一下#和KaTeX parse error: Expected 'EOF', got '#' at position 5: 的區(qū)別,#?字符串處理多矮,加單引號缓淹,可以一定…直接使用,當傳入的是數字時塔逃,用#會進行隱式轉換為字符串讯壶,耗性能。

3. 判斷語句湾盗,這個也是非常常用和重要的地方伏蚊。

對于MyBatis的很簡單,只要在where 或者if 的標簽里面添加test=""就可以了淹仑,里面寫判斷條件了丙挽。但是IBatis的就麻煩了許多了,它將每個都方法都進行了封裝匀借。例如

isNull:判斷property字段是否是null

<isNull prepend="and" property="id">? </isNull>

isEqual相當于equals颜阐,判斷狀態(tài)值。

<isEqual property="state" compareValue="0">? </isEqual>` 或

<isEqual property="state" compareProperty="nextState">? </isEqual>

isEmpty判斷參數是否為Null或者空吓肋,滿足其中一個條件則其true凳怨。

isNotEmpty相反,當參數既不為Null也不為空是其為true。

4. 循環(huán)的使用

iBatis是使用Iterate:這屬性遍歷整個集合肤舞,并為 java.util.List 集合中的元素重復元素體的內容紫新。例如

<isNotEmpty property="deptIds">

and dept_id in

<iterate property="deptIds" open="(" close=")" conjunction=",">

#deptIds[]#

? ? ? ? </iterate>

</isNotEmpty>

deptIds是數組類型的屬性值,當deptIds不為null或“”時李剖,進行deptIds遍歷取值芒率。

MyBatis使用的是ForEach方法。他可以遍歷List,,Map三種元素篙顺。

循環(huán)插入:

<insert id="xxxx" parameterType="CompilingRateDto">

? ? ? ? insert into cm_compiling_rate (area)

? ? ? ? values

? ? ? ? <foreach collection="compilingRateList" item="compilingRate"? separator="," >

? ? ? (#{compilingRate.area})

? ? ? ? </foreach>

</insert>

循環(huán)更新:

<update id="xxxxx" parameterType="CompilingRateDto">

? ? ? ? <foreach collection="updateCompilingRateList" item="compiling"? separator=";" >

? ? ? ? update cm_compiling_rate cr

? ? ? set? compiling_manpower = #{compiling.compilingManpower},

? ? where cr.valid_Month=#{compiling.validMonth}? ? ?

? ? ? </foreach>? ? ? ? ?

</update>

5. MyBatis中一條sql結束后可以有“;”偶芍,而iBatis會報錯

6. 存儲過程的調用

iBatis:

<procedure id="setCaseQueueStatus.sql" parameterMap="params.caseQueueStatus">

<![CDATA[

? ? {call CMPCCDATA.PKG_CMPCC_QUEUE_TEASE.PROC_SET_AST_ACCT_STATUS(?,?)}

? ? ]]>

? ? </procedure>

? <parameterMap id="params.caseQueueStatus" class="java.util.Map">

? ? ? ? <parameter property="P_ACCT_SN" jdbcType="VARCHAR" javaType="string" mode="IN" />

? ? ? ? <parameter property="P_QUEUE_STATUS" jdbcType="VARCHAR" javaType="string" mode="IN" />

? ? </parameterMap>

MyBatis :

<select id="xxxxx"? resultType = "java.lang.String" statementType="CALLABLE">

? {call batch_randomMark()}

</select>

通過 statementType 屬性將該語句標識為存儲過程而非普通 SQL 語句。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末德玫,一起剝皮案震驚了整個濱河市匪蟀,隨后出現的幾起案子,更是在濱河造成了極大的恐慌宰僧,老刑警劉巖材彪,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異琴儿,居然都是意外死亡段化,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門造成,熙熙樓的掌柜王于貴愁眉苦臉地迎上來穗泵,“玉大人,你說我怎么就攤上這事谜疤。” “怎么了现诀?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵夷磕,是天一觀的道長。 經常有香客問我仔沿,道長坐桩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任封锉,我火速辦了婚禮绵跷,結果婚禮上,老公的妹妹穿的比我還像新娘成福。我一直安慰自己碾局,他們只是感情好,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布奴艾。 她就那樣靜靜地躺著净当,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上像啼,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天俘闯,我揣著相機與錄音,去河邊找鬼忽冻。 笑死真朗,一個胖子當著我的面吹牛,可吹牛的內容都是我干的僧诚。 我是一名探鬼主播遮婶,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼振诬!你這毒婦竟也來了蹭睡?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤赶么,失蹤者是張志新(化名)和其女友劉穎肩豁,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體辫呻,經...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡清钥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了放闺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祟昭。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡怖侦,死狀恐怖篡悟,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情匾寝,我是刑警寧澤搬葬,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站艳悔,受9級特大地震影響急凰,放射性物質發(fā)生泄漏。R本人自食惡果不足惜猜年,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一抡锈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乔外,春花似錦床三、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春补疑,著一層夾襖步出監(jiān)牢的瞬間歧沪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工莲组, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留诊胞,地道東北人。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓锹杈,卻偏偏與公主長得像撵孤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子竭望,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內容