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