摘要:枚舉類(lèi)型提供了提供了持久化的枚舉類(lèi)型。假設(shè)表結(jié)構(gòu)的列,使用類(lèi)型存儲(chǔ)或,對(duì)象使用枚舉類(lèi)型標(biāo)識(shí)當(dāng)執(zhí)行語(yǔ)句時(shí),或會(huì)存儲(chǔ)到列,如果想要存儲(chǔ)的時(shí)枚舉值而不是枚舉名字,就需要配置類(lèi)型處理器和提供了對(duì)和的內(nèi)檢支持,將映射為,將映射為數(shù)組。
mybatis中靜態(tài)sql語(yǔ)句有時(shí)不足以滿足用戶的需求,因此其提供了動(dòng)態(tài)sql標(biāo)簽。
IF標(biāo)簽if標(biāo)簽通過(guò)條件測(cè)試,動(dòng)態(tài)插入sql片段,例如:
and name like #{courseName}and start_date>=#{startDate} and end_start<=#{endDate} ]]>
保證之間的內(nèi)容作為一般的字符處理,不做特殊處理。
choose標(biāo)簽choose標(biāo)簽用于選擇第一個(gè)選擇條件,例如:where標(biāo)簽
有時(shí),所有的查詢條件可能都是可選的,但是其中至少有一個(gè)查詢是需要的,但是若有多個(gè)查詢條件都滿足條件,這時(shí)就需要在查詢條件添加and 或or。mybatis提供了where標(biāo)簽用于支持建立這種類(lèi)型的sql語(yǔ)句,當(dāng)?shù)谝粋€(gè)滿足的條件前面有and 或 or 等連接詞時(shí),會(huì)自動(dòng)刪除連接詞。例子如下所示:trim標(biāo)簽
trim標(biāo)簽比where標(biāo)簽更加靈活,因?yàn)樗梢栽跅l件前面加上連接詞或刪除連接詞 也可以在條件后面加上連接詞或刪除連接詞;舉例如下:foreach標(biāo)簽
foreach元素的屬性主要有 item,index,collection,open,separator,close。 item表示集合中每一個(gè)元素進(jìn)行迭代時(shí)的別名. index指 定一個(gè)名字,用于表示在迭代過(guò)程中,每次迭代到的位置. open表示該語(yǔ)句以什么開(kāi)始. separator表示在每次進(jìn)行迭代之間以什么符號(hào)作為分隔 符. close表示以什么結(jié)束. 舉例如下:set標(biāo)簽
set標(biāo)簽類(lèi)似于where標(biāo)簽,會(huì)在返回的條件前面插入set關(guān)鍵字,并移除最后一個(gè)條件的后面符號(hào),舉例如下所示:枚舉類(lèi)型update students 如果三個(gè)條件都是ture,phone后面的逗號(hào)將被移除。name=#{name}, email=#{email}, phone=#{phone},
mybatis提供了提供了持久化的枚舉類(lèi)型。假設(shè) Student表結(jié)構(gòu)的gender列,使用varchar類(lèi)型存儲(chǔ)MALE或FEMALE,Student對(duì)象使用枚舉類(lèi)型標(biāo)識(shí)gender. public enum Gender{ FEMALE,MALE } public class Student { .... private Gender gender; .... }CLOB和BLOBinsert into student (id,name,gender) values(#{id},#{name},#{gender}) 當(dāng)執(zhí)行insert語(yǔ)句時(shí),MALE或FEMALE會(huì)存儲(chǔ)到gender列,如果想要存儲(chǔ)的時(shí)枚舉值而不是枚舉名字,就需要配置類(lèi)型處理器:
mybatis提供了對(duì)clob和blob的內(nèi)檢支持,將clob映射為java.lang.String,將blob映射為byte[]數(shù)組。因此用戶可以像原始類(lèi)型那樣處理clob和blob類(lèi)型。傳遞多個(gè)參數(shù)
mybatis提供了傳遞多個(gè)參數(shù)的內(nèi)建功能,并通過(guò)#{param}語(yǔ)法引用參數(shù)。舉例如下: List將多行數(shù)據(jù)存儲(chǔ)到map中,并以某個(gè)列值作為keyfindAllStudentByNameEmail(String name,String email);
要完成上述功能,需要使用sqlSession的selectMap方法; 舉例如下: MapstudentMap=sqlSession.selectMap("com.mybatis3.mappers.StudentMapper.findAllStudent","studId");
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/70214.html
摘要:執(zhí)行沒(méi)有,批處理不支持,將所有都添加到批處理中,等待統(tǒng)一執(zhí)行,它緩存了多個(gè)對(duì)象,每個(gè)對(duì)象都是完畢后,等待逐一執(zhí)行批處理。 Mybatis常見(jiàn)面試題 #{}和${}的區(qū)別是什么? #{}和${}的區(qū)別是什么? 在Mybatis中,有兩種占位符 #{}解析傳遞進(jìn)來(lái)的參數(shù)數(shù)據(jù) ${}對(duì)傳遞進(jìn)來(lái)的參數(shù)原樣拼接在SQL中 #{}是預(yù)編譯處理,${}是字符串替換。 使用#{}可以有效的防止...
摘要:最終能和面試官聊的開(kāi)心愉快投緣的叫面霸。能夠與很好的集成提供映射標(biāo)簽,支持對(duì)象與數(shù)據(jù)庫(kù)的字段關(guān)系映射提供對(duì)象關(guān)系映射標(biāo)簽,支持對(duì)象關(guān)系組件維護(hù)。使用可以有效的防止注入,提高系統(tǒng)安全性。 showImg(https://segmentfault.com/img/bVbsSlt?w=358&h=269); 一、概述 面試,難還是不難?取決于面試者的底蘊(yùn)(氣場(chǎng)+技能)、心態(tài)和認(rèn)知及溝通技巧。...
摘要:在動(dòng)態(tài)解析階段,和會(huì)有不同的表現(xiàn)解析為一個(gè)預(yù)編譯語(yǔ)句的參數(shù)標(biāo)記符。其次,在預(yù)編譯之前已經(jīng)被變量替換了,這會(huì)存在注入問(wèn)題。預(yù)編譯語(yǔ)句對(duì)象可以重復(fù)利用。默認(rèn)情況下,將對(duì)所有的進(jìn)行預(yù)編譯??偨Y(jié)本文主要深入探究了對(duì)和的不同處理方式,并了解了預(yù)編譯。 mybatis 中使用 sqlMap 進(jìn)行 sql 查詢時(shí),經(jīng)常需要?jiǎng)討B(tài)傳遞參數(shù),例如我們需要根據(jù)用戶的姓名來(lái)篩選用戶時(shí),sql 如下: sele...
摘要:什么是本是的一個(gè)開(kāi)源項(xiàng)目年這個(gè)項(xiàng)目由遷移到了,并且改名為。如下的代碼,如果有多個(gè)條件的話,那么拼接起來(lái)很容易出錯(cuò)查詢語(yǔ)句根據(jù)是否為來(lái)判斷是否是條件查詢。而如果我們使用的話,就可以免去查詢助手類(lèi)了。 什么是MyBatis MyBatis 本是apache的一個(gè)開(kāi)源項(xiàng)目iBatis, 2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,...
摘要:原因就是傳入的和原有的單引號(hào),正好組成了,而后面恒等于,所以等于對(duì)這個(gè)庫(kù)執(zhí)行了查所有的操作。類(lèi)比的執(zhí)行流程和原有的我們使用的方法就是??梢岳斫鉃榫褪怯脕?lái)解析定制的符號(hào)的語(yǔ)句。后續(xù)的流程,就和正常的流程一致了。 前言 在JDBC中,主要使用的是兩種語(yǔ)句,一種是支持參數(shù)化和預(yù)編譯的PrepareStatement,能夠支持原生的Sql,也支持設(shè)置占位符的方式,參數(shù)化輸入的參數(shù),防止Sql注...
閱讀 3737·2021-11-24 10:23
閱讀 2780·2021-09-06 15:02
閱讀 1284·2021-08-23 09:43
閱讀 2361·2019-08-30 15:44
閱讀 3058·2019-08-30 13:18
閱讀 795·2019-08-23 16:56
閱讀 1753·2019-08-23 16:10
閱讀 551·2019-08-23 15:08