版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、例如下面的例子:publicerface UserInfoMapper extends Mapper /其他必須手寫的接口.一旦繼承了 Mapper,繼承的 Mapper 就擁有了以下通用的方法:/根據(jù)實(shí)體類不為 null 的字段進(jìn)行查詢,條件全部使用=號 and 條件List select(T record);/根據(jù)實(shí)體類不為 null 的字段查詢總數(shù),條件全部使用=號 and 條件selectCount(T record);/根據(jù)主鍵進(jìn)行查詢,必須保證結(jié)果唯一/單個(gè)字段做主鍵時(shí),可以直接寫主鍵的值/聯(lián)合主鍵時(shí),key 可以是實(shí)體類,也可以是 MapT selectByPrimaryKey(
2、Object key);/一條數(shù)據(jù)/支持 Oracle 序列,UUID,類似的 INDENTITY 自動增長(自動回寫)/優(yōu)先使用傳入的參數(shù)值,參數(shù)值空時(shí),才會使用序列、UUID,自動增長insert(T record);1.1. 1. 繼承通用的 Mapper,必須指定泛型集成方法請看上面的文檔,集成后,可以繼續(xù)閱讀本頁文檔。/一條數(shù)據(jù),只不為 null 的字段,不會影響有默認(rèn)值的字段/支持 Oracle 序列,UUID,類似的 INDENTITY 自動增長(自動回寫)/優(yōu)先使用傳入的參數(shù)值,參數(shù)值空時(shí),才會使用序列、UUID,自動增長insertSelective(T record);/根
3、據(jù)實(shí)體類中字段不為 null 的條件進(jìn)行刪除,條件全部使用=號 and 條件delete(T key);/通過主鍵進(jìn)行刪除,這里最多只會刪除一條數(shù)據(jù)/單個(gè)字段做主鍵時(shí),可以直接寫主鍵的值/聯(lián)合主鍵時(shí),key 可以是實(shí)體類,也可以是 MapdeleteByPrimaryKey(Object key);/根據(jù)主鍵進(jìn)行更新,這里最多只會更新一條數(shù)據(jù)/參數(shù)為實(shí)體類updateByPrimaryKey(T record);/根據(jù)主鍵進(jìn)行更新/只會更新不是 null 的數(shù)據(jù)updateByPrimaryKeySelective(T record);/根據(jù) Exmaple 條件查詢總數(shù)selectCount
4、ByExle(Object exle);/根據(jù) Exmaple 條件刪除deleteByExle(Object exle);1. 表名默認(rèn)使用類名,駝峰轉(zhuǎn)下劃線(只對大寫字母進(jìn)行處理),如 UserInfo 默認(rèn)對應(yīng)的表名為 user_info。表名可以使用Table(name = tableName)進(jìn)行指定,對不符合第一條默認(rèn)規(guī)則的可以通過這種方式指定表名.字段默認(rèn)和Column 一樣,都會作為表字段,表字段默認(rèn)為 Java 對象的 Field 名字駝峰轉(zhuǎn)下劃線形式.可以使用Column(name = fieldName)指定不符合第 3 條規(guī)則的字段名使用Transient 注解可以忽略
5、字段,添加該注解的字段不會作為表字段使用.建議一定是有一個(gè)Id 注解作為主鍵的字段,可以有多個(gè)Id 注解的字段作為聯(lián)合主鍵.1.2. 2. 泛型(實(shí)體類)的類型必須符合要求實(shí)體類按照如下規(guī)則和數(shù)據(jù)庫表進(jìn)行轉(zhuǎn)換,注解全部是 JPA 中的注解:/根據(jù) Exmaple 條件查詢List selectByExle(Object exle);/根據(jù) Exmaple 條件更新非空(null)字段updateByExleSelective(Param(record) T record, Param(exle) Object exle);/根據(jù) Exmaple 條件更新全部字段updateByExle(Par
6、am(record) T record, Param(exle) Object exle);該字段不會回寫。這種情況對應(yīng)類似如下的 XML: inserto Author(id, username, password,bio, favourite_section) values(seq_userid.nextval, #username, #password, #, #bio, #favouriteSection,jdbcType=VARCHAR)默認(rèn)情況下,實(shí)體類中如果不存在包含Id 注解的字段,所有的字段都會作為主鍵字段進(jìn)行使用(這種效率極低).實(shí)體類可以繼承使用,可以參考測試代碼中的co
7、m.abel533.m.UserLogin2 類.由于基本類型,如作為實(shí)體類字段時(shí)會有默認(rèn)值 0,而且無法消除,所以實(shí)體類中建議不要使用基本類型.除了上面提到的這些,Mapper 還提供了序列(支持 Oracle)、UUID(任意數(shù)據(jù)庫,字段長度 32)、主鍵自增(類似,Hsqldb)三種方式,其中序列和 UUID 可以配置多個(gè),主鍵自增只能配置一個(gè)。這三種方式不能同時(shí)使用,同時(shí)存在時(shí)按照 序列UUID主鍵自增的優(yōu)先級進(jìn)行選擇.下面是具體配置方法:使用序列可以添加如下的注解:/可以用于數(shù)字類型,字符串類型(需數(shù)據(jù)庫支持自動)的字段SequenceGenerator(name=Any,seque
8、nceName=seq_userid)Idprivateeger id;增加這個(gè)注解后, 會回寫 ID 。通過設(shè)置GeneratedValue 的 generator 參數(shù)可以支持的獲取主鍵的方法,例如在 Oracle 中使用序列:Id使用主鍵自增:/不限于Id 注解的字段,但是一個(gè)實(shí)體類中只能存在一個(gè)(繼承關(guān)系中也只能存在一個(gè))IdGeneratedValue(strategy = GenerationType.IDENTITY)privateeger id;該字段不會回寫。這種情況對應(yīng)類似如下的 XML:inserto Author(id, username, password,bio,
9、favourite_section) values(#id, #username_bind, #password, #, #bio, #favouriteSection,jdbcType=VARCHAR)使用 UUID 時(shí):/可以用于任意字符串類型長度超過 32 位的字段GeneratedValue(generator = UUID)private String username;這會令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法來取出由數(shù)據(jù)庫生成的主鍵(比如:像和 SQL Server 這樣的關(guān)系數(shù)據(jù)庫管理系統(tǒng)的自動遞增字段)。 這種情況對應(yīng)的 xml 類似下
10、面這樣:主鍵自增還有一種簡單的寫法:/不限于Id 注解的字段,但是一個(gè)實(shí)體類中只能存在一個(gè)(繼承關(guān)系中也只能存在一個(gè))GeneratedValue(generator = JDBC)privateeger id;GeneratedValue(strategy = GenerationType.IDENTITY,generator = select SEQ_ID.nextval from dual)privateeger id;使用 Oracle 序列的時(shí)候,還需要配置:因?yàn)樵跀?shù)據(jù)庫前,需要先獲取到序列值,否則會報(bào)錯。這種情況對于的 xml 類似下面這樣: select SEQ_ID.nextv
11、al from dual inserto Author(id, username, password,bio, favourite_section) values(#id, #username, #password, #, #bio, #favouriteSection,jdbcType=VARCHAR)例如本項(xiàng)目測試中的配置:附:Spring 配置相關(guān)如果你在 Spring 中配置 Mapper 接口,不需要像上面這樣一個(gè)個(gè)配置,只需要有下面的這個(gè)掃描 Mapper 接口的這個(gè)配置即可:1.3. 3. 將繼承的 Mapper 接口添加到 Mybatis 配置中 inserto Author
12、(username,password,bio)values (#username,#password,#,#bio)例如下面這個(gè)簡單的例子:SqlSessqlSes= MybatisHelper.getSqlSes(); try /獲取 MapperUserInfoMapper mapper = sqlSes.getMapper(UserInfoMapper.class); UserInfo userInfo = new UserInfo(); userInfo.setUsername(abel533);userInfo.setPassword(123456); userInfo.setUse
13、rtype(2);userInfo.set();/新增一條數(shù)據(jù)Assert.assertEquals(1, mapper.insert(userInfo);/ID 回寫,不為空Assert.assertNotNull(userInfo.getId();/6 是當(dāng)前的 IDAssert.assertEquals(6, ()userInfo.getId();/通過主鍵刪除新增的數(shù)據(jù)Assert.assertEquals(1,mapper.deleteByPrimaryKey(userInfo); finally sqlSes.close();1.4. 4. 代碼中使用如果想在 Spring4 中使
14、用泛型注入,還需要包含 Mapper所在的包,具體請看 在 Spring4 中使用通用 Mapper。另一個(gè)例子:SqlSessqlSes= MybatisHelper.getSqlSes();try /獲取 MapperCountryMapper mapper = sqlSes.getMapper(CountryMapper.class);/查詢總數(shù)Assert.assertEquals(183, mapper.selectCount(new Country();/查詢 100Country country = mapper.selectByPrimaryKey(100);/根據(jù)主鍵刪除Assert.assertEquals(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 如何制定全面有效的團(tuán)隊(duì)計(jì)劃
- 新興崗位職業(yè)發(fā)展策略計(jì)劃
- 急救措施應(yīng)急演練培訓(xùn)
- 生物專題講座活動安排計(jì)劃
- 如何提升生產(chǎn)設(shè)備的利用率計(jì)劃
- 農(nóng)業(yè)行業(yè)安全保障工作的總結(jié)計(jì)劃
- 興趣小組與社團(tuán)活動安排計(jì)劃
- 中考英語寫作高分必背句式總結(jié)
- 2024年對學(xué)生的評語
- 2024-2030年中國防護(hù)服行業(yè)市場發(fā)展分析及企業(yè)案例與投資前景研究報(bào)告
- 蘇科版一年級心理健康教育第5節(jié)《我們一起玩》課件(定稿)
- 初二上冊期末地理知識點(diǎn)歸納總結(jié)
- 大象版2022-2023五年級科學(xué)上冊《3-4我是小小安全員》課件
- CRF病例報(bào)告表模板
- 31答復(fù)一通意見陳述書正文
- 二年級蘇教版數(shù)學(xué)上冊《認(rèn)識厘米》教案(市級公開課)
- 課程考試考場情況記錄表(模板)
- 2022全國自考警察倫理學(xué)考前試題和答案
- 教研《My clothes Let's talk》評課稿6月
- 藝人演藝經(jīng)紀(jì)合同(全約+獨(dú)家)、一次演出服務(wù)合同(個(gè)人簽署)、綜藝節(jié)目海報(bào)委托設(shè)計(jì)服務(wù)合同--《民法典》修訂版
- 主題班會:拍賣會ppt課件
評論
0/150
提交評論