摘要:提供了四個(gè)主要的每一個(gè)都有一個(gè)可選的以及可選的其中要和中的方法簽名相同。
mybatis提供了四個(gè)主要的statement: insert select update delete 每一個(gè)statement都有一個(gè)id,可選的parametertype 以及可選的resultMap,其中statement要和mapper interface中的方法簽名相同。調(diào)用方式:
INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL, PHONE) VALUES(#{studId},#{name},#{email},#{phone}) int count =sqlSession.insert("com.mybatis3.mappers.StudentMapper.insertStudent", student); StudentMapper mapper = sqlSession.getMapper(StudentMapper.class); int count = mapper.insertStudent(student);
在insert statement中如果要使用自動(dòng)生成主鍵的功能,需要在insert中進(jìn)行配置useGeneratedKeys和keyProperty
INSERT INTO STUDENTS(NAME, EMAIL, PHONE) VALUES(#{name},#{email},#{phone})
但是有些數(shù)據(jù)庫(kù)并不支持自增功能,例如oracle數(shù)據(jù)庫(kù),以oracle為例,oracle雖然不提供自增功能,但是提供了一個(gè)sequence,假設(shè)有一個(gè)sequence稱為STUD_ID_SEQ,insert statement可以寫(xiě)為:
select STUD_ID_SEQ.NEXTVAL FROM DUAL; INSERT INTO STUDENTS(NAME, EMAIL, PHONE) VALUES(#{name},#{email},#{phone})
對(duì)于select statement 若查詢結(jié)果返回多個(gè)結(jié)果,mybatis會(huì)返回一個(gè)list集合,當(dāng)然也可以將返回結(jié)果設(shè)置為map set 等集合。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/70181.html
摘要:我認(rèn)為學(xué)習(xí)框架源碼分為兩步抓住主線,掌握框架的原理和流程理解了處理思路之后,再去理解面向?qū)ο笏枷牒驮O(shè)計(jì)模式的用法目前第一步尚有問(wèn)題,需要多走幾遍源碼,加深下理解,一起加油 這篇文章我們來(lái)深入閱讀下Mybatis的源碼,希望以后可以對(duì)底層框架不那么畏懼,學(xué)習(xí)框架設(shè)計(jì)中好的思想; 架構(gòu)原理 架構(gòu)圖 showImg(https://segmentfault.com/img/remote/...
摘要:功能將查詢結(jié)果映射為實(shí)力對(duì)象。屬性標(biāo)簽的標(biāo)識(shí)返回值的全限定類名屬性設(shè)為則自動(dòng)查找與字段名小寫(xiě)同名的屬性名,并調(diào)用方法設(shè)為則需要在內(nèi)明確映射關(guān)系才會(huì)調(diào)用對(duì)應(yīng)的方法。 ResultMap功能:將select statement查詢結(jié)果映射為java實(shí)力對(duì)象。 RestultMap屬性: id:resultmap標(biāo)簽的標(biāo)識(shí); type:返回值的全限定類名; autoMapping屬性:設(shè)為t...
摘要:通過(guò)工廠獲得對(duì)象。咱直接看,這個(gè)命名明顯告訴玩家,就在前面了。是個(gè)抽象方法,我們得去看實(shí)現(xiàn)??吹较肟吹臇|西了,之后將結(jié)果交給處理。執(zhí)行完操作之后,將結(jié)果交給。 用了挺久的mybatis,但一直停留在用的層面上,覺(jué)得不行的呀,得走出舒適區(qū)。所以想自己看看mybatis的實(shí)現(xiàn),然后模仿著寫(xiě)一個(gè),哈哈,當(dāng)然一開(kāi)始不會(huì)要求完成度很高。這一篇就先看下mybatis奧秘。這里參考的mybatis源...
摘要:場(chǎng)合常見(jiàn)一些明細(xì)記錄的展示,將關(guān)聯(lián)查詢信息全部展示在頁(yè)面時(shí),此時(shí)可直接使用將每一條記錄映射到中,在前端頁(yè)面遍歷中是即可。如果查詢單表就可以滿足需求,一開(kāi)始先查詢單表,當(dāng)需要關(guān)聯(lián)信息時(shí),再關(guān)聯(lián)查詢,當(dāng)需要關(guān)聯(lián)信息再查詢這個(gè)叫延遲加載。 配置文件和映射文件還有挺多的屬性我還沒(méi)有講的,現(xiàn)在就把它們一一補(bǔ)全 映射文件 在mapper.xml文件中配置很多的sql語(yǔ)句,執(zhí)行每個(gè)sql語(yǔ)句時(shí),封裝...
摘要:執(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ù)編譯處理,${}是字符串替換。 使用#{}可以有效的防止...
閱讀 3333·2023-04-25 19:09
閱讀 4045·2021-10-22 09:54
閱讀 1897·2021-09-29 09:35
閱讀 3079·2021-09-08 09:45
閱讀 2569·2021-09-06 15:00
閱讀 2861·2019-08-29 15:32
閱讀 1146·2019-08-28 18:30
閱讀 449·2019-08-26 13:43