![段建國(guó)-課件mybatis教案chapter_第1頁(yè)](http://file4.renrendoc.com/view/201c251c4f1283384c6a56a73c2a8e1f/201c251c4f1283384c6a56a73c2a8e1f1.gif)
![段建國(guó)-課件mybatis教案chapter_第2頁(yè)](http://file4.renrendoc.com/view/201c251c4f1283384c6a56a73c2a8e1f/201c251c4f1283384c6a56a73c2a8e1f2.gif)
![段建國(guó)-課件mybatis教案chapter_第3頁(yè)](http://file4.renrendoc.com/view/201c251c4f1283384c6a56a73c2a8e1f/201c251c4f1283384c6a56a73c2a8e1f3.gif)
![段建國(guó)-課件mybatis教案chapter_第4頁(yè)](http://file4.renrendoc.com/view/201c251c4f1283384c6a56a73c2a8e1f/201c251c4f1283384c6a56a73c2a8e1f4.gif)
![段建國(guó)-課件mybatis教案chapter_第5頁(yè)](http://file4.renrendoc.com/view/201c251c4f1283384c6a56a73c2a8e1f/201c251c4f1283384c6a56a73c2a8e1f5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Chapter4多表操作*課程回顧*1MyBateis配置文件2文件詳解3動(dòng)態(tài) SQL 使用*教學(xué)導(dǎo)航*1一對(duì)一關(guān)系2一對(duì)一方法二3一對(duì)多關(guān)系前面章節(jié)用 mybatis 能對(duì)單表進(jìn)行增刪改查操作了,也能用動(dòng)態(tài) SQL 書寫比較復(fù)雜的 sql 語(yǔ)句。但是在實(shí)際開(kāi)發(fā)中,做項(xiàng)目不可能只是單表操作,往往會(huì)涉及到多之間的關(guān)聯(lián)操作。那么如何用 mybatis 處理多表之間的關(guān)聯(lián)操作呢?一、一對(duì)一關(guān)聯(lián)操作查詢所有訂單信息,關(guān)聯(lián)查詢下單用戶信息。注意:因?yàn)橐粋€(gè)訂單信息只會(huì)是一個(gè)人下的訂單,所以從查詢訂單信息出發(fā)關(guān)聯(lián)查詢用戶信息為一對(duì)一查詢。如果從用戶信息出發(fā)查詢用戶下的訂單信息則為一對(duì)多查詢,因?yàn)橐粋€(gè)用戶可以
2、下多個(gè)訂單。使用 resultType,定義訂單信息 po 類,此 po 類中包括了訂單信息和用戶信息:建表語(yǔ)句見(jiàn) mybatis.sql 文件。創(chuàng)建 javaWeb 工程項(xiàng)目 MyBatisFour(省略,參見(jiàn)示例 one 包部分) 1、Sql 語(yǔ)句準(zhǔn)備:SELECTo.*, u.username, u.addressFROMmy_orders o,user u WHERE o.user_id = u.id and=?2、創(chuàng)建 perties在類目錄 src 下面(參見(jiàn)前面章節(jié))3、定義 pojo:User.java(參見(jiàn) MyBatisTwo 項(xiàng)目)Order.javar
3、esultType Po 類中應(yīng)該包括上邊 sql 查詢出來(lái)的所有字段,如下:注意:OrdersCustom 類繼承 Orders 類后 OrdersCustom 類包括了 Orders 類的所有字段,只需要定義用戶的信息字段即可。4、編寫 Mapper 接口 UserMapper.javapublicerface UaweMapper public List findOrdersList(orderID) throws Exception;public class OrdersCustom extends Order private String username;/ 用戶名稱 privat
4、e String address;/ 用戶地址.省略相應(yīng)get and set 方法public class Order privateeger id; privateeger userId; private String number; private Date createtime; private String note;.省略相應(yīng)get and set 方法文件 UserMapper.xml5、MyBatis配置文件加載 Mapper 接口6、編寫測(cè)試類及方法OrdersTest 類:public class OrdersTest /會(huì)話工廠private SqlSesFactory
5、sqlSesFactory;/* junit 測(cè)試中方法調(diào)用時(shí),在執(zhí)行之前初始化方法*/ Beforepublic void init() throws IOExceptionSELECTo.*,u.username,u.address FROM My_orders o, user u WHERE o.user_id = u.id and=#id/定義mybatis 全局配置文件String resource = SqlMapConfig.xml;/加載 mybatis 全局配置文件InputStreaminputStream=Resour.getResourceAsStream(resour
6、ce);/構(gòu)建sqlSes的工廠sqlSesFactory=newSqlSesFactoryBuilder().build(inputStream);Testpublic void queryByAll() List list = null;SqlSessqlSes= null;try / 創(chuàng)建數(shù)據(jù)庫(kù)會(huì)話實(shí)例sqlSessqlSes= sqlSesFactory.openSes();/獲限mapper 接口實(shí)例UserMapperuserMapper=sqlSes.getMapper(UserMapper.class);/查詢訂單信息list = userMapper.findOrdersLi
7、st(3);for (OrdersCustom ordersCustom : list) System.out.prln(ordersCustom.getUsername();catch (Exception e) e.prStackTrace();finally 執(zhí)行方法觀察結(jié)果定義專門的 po 類作為輸出類型,其中定義了 sql 查詢結(jié)果集所有的字段。此方法較為簡(jiǎn)單,企業(yè)中使用普遍。二、一對(duì)一方法二使用 resultMap,定義專門的 resultMap 用于一對(duì)一查詢結(jié)果。在 javaWeb 工程項(xiàng)目 MyBatisFour(增加 two package 包部分)1、Sql 語(yǔ)句準(zhǔn)備:S
8、ELECT .id,o.user_id,o.number,o.createtime,o.note,u.username,u.addressFROM My_orders o JOIN user u ON u.id = o.user_id2、定義 pojo:User.java(參見(jiàn)本章上例)在 Order 類中加入 User 屬性,user 屬性中用于關(guān)聯(lián)查詢的用戶信息,因?yàn)橛唵侮P(guān)聯(lián)查詢用戶是一對(duì)一關(guān)系,所以這里使用單個(gè) User 對(duì)象息。關(guān)聯(lián)查詢的用戶信Order.javapublic class Order privateeger id; privateeger userId; private
9、 String number; private Date createtime;private String note;if (sqlSes!= null) sqlSes.close();3、編寫 Mapper 接口 UserMapper.java文件 UserMapper.xmlpublicerface UserMapper public List findOrdersList() throws Exception;private User user;.省略 get and set 方法這里 resultMap 指定 orderUserResultMapassotion:表示進(jìn)行關(guān)聯(lián)查詢單條
10、property:表示關(guān)聯(lián)查詢的結(jié)果user 屬性中在 com.java.mybatis.tow.beans.Orders 的javaType:表示關(guān)聯(lián)查詢的結(jié)果類型:查詢結(jié)果的 id 列對(duì)應(yīng)關(guān)聯(lián)對(duì)象的 id 屬性,這里是表示 id 是關(guān)聯(lián)查詢對(duì)象的唯一標(biāo)識(shí)。:查詢結(jié)果的 username 列對(duì)應(yīng)關(guān)聯(lián)對(duì)象的 username 屬性。4、MyBatis配置文件加載 Mapper 接口5、編寫測(cè)試類及方法OrdersTest 類: SELECTo.id,o.user_id,o.number,o.createtime,o.note,u.username,u.address FROM My_order
11、s o JOIN user u ON u.id = o.user_idpublic class OrdersTest /會(huì)話工廠private SqlSes/*Factory sqlSesFactory;* junit 測(cè)試中方法調(diào)用時(shí),在執(zhí)行之前初始化方法*/ Beforepublic void init() throws IOException/定義mybatis 全局配置文件String resource = SqlMapConfig.xml;/加載 mybatis 全局配置文件InputStream inputStream = Resour.getResourceAsStream(re
12、source);/構(gòu)建sqlSes的工廠sqlSesFactory=newSqlSesFactoryBuilder().build(inputStream);Testpublic void queryByAll() List list = null;SqlSestry sqlSes= null;/ 創(chuàng)建數(shù)據(jù)庫(kù)會(huì)話實(shí)例sqlSessqlSes= sqlSesFactory.openSes();/獲限mapper 接口實(shí)例UserMapper userMapper = sqlSes/查詢訂單信息.getMapper(UserMapper.class);list = userMapper.findO
13、rdersList();for (Order ordersCustom : list) System.out.prln(ordersCustom.getUser().getUsername();觀察運(yùn)行結(jié)果:三、一對(duì)多關(guān)聯(lián)查詢所有用戶信息及用戶關(guān)聯(lián)的訂單信息,用戶信息和訂單信息為一對(duì)多關(guān)系。使用 resultMap 實(shí)現(xiàn)進(jìn)行介紹:在 javaWeb 工程項(xiàng)目 MyBatisFour(增加 three package 包部分)1、Sql 語(yǔ)句準(zhǔn)備:SELECT u.*, o.id, o.number,o.createtime,o.noteFROM user u LEFT JO2、定義 pojo:
14、y_orders o ON u.id = o.user_idOrder.javapublic class Order privateeger id; catch (Exception e) e.prStackTrace(); finally if (sqlSes!= null) sqlSes.close();User.java 在 User 類中加入 Listorders 屬性3、編寫 Mapper 接口 UserMapper.java文件 UserMapper.xmlpublicerface UserMapper List getUserOrderList();public claser p
15、rivateeger id;private String username;/ 用戶private String sex;/ private Date birthday;/ 生日private String address;/ 地址privaist orders;. 省略相應(yīng) get and set 方法privateeger userId; private String number; private Date createtime; private String note;.省略 get and set 方法!- -SELECTu.*, o.id,o.number,o.createtime
16、,o.noteFROMuser uLEFT JOy_orders o ON u.id = o.user_idcollection 部分定義了用戶關(guān)聯(lián)的訂單信息。表示關(guān)聯(lián)查詢結(jié)果集property=orders:關(guān)聯(lián)查詢的結(jié)果集在 User 對(duì)象的上哪個(gè)屬性。ofType=order:指定關(guān)聯(lián)查詢的結(jié)果集中的對(duì)象類型即 List 中的對(duì)象類型。此處可以使用別名,也可以使用全名。4、MyBatis配置文件加載 Mapper 接口6、編寫測(cè)試類及方法OrdersTest 類:(跟本章上例不同部分列出)public void queryByAll() List list = null; SqlSessqlSes= null; try sqlSes= sqlSesFactory.openSes(); UserMapper userMapper =sqlSes.getMapper(UserMapper.class); list = userMapper.getUserOrderList(); for (User userOrders : list) Sy
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑植筋加固材料供應(yīng)及施工合同
- 2025年度人工智能項(xiàng)目借款合同范本
- 2025年度文化藝術(shù)場(chǎng)館工裝裝飾裝修合同范本
- 金華浙江金華永康市自然資源和規(guī)劃局工作人員招聘5人筆試歷年參考題庫(kù)附帶答案詳解
- 溫州浙江溫州泰順縣面向2025年醫(yī)學(xué)類普通高等院校應(yīng)屆畢業(yè)生提前招聘筆試歷年參考題庫(kù)附帶答案詳解
- 桂林2025年廣西桂林市全州縣事業(yè)單位招聘服務(wù)期滿三支一扶人員5人筆試歷年參考題庫(kù)附帶答案詳解
- 杭州浙江杭州市上城區(qū)人民政府南星街道辦事處編外人員招聘筆試歷年參考題庫(kù)附帶答案詳解
- 承德2025年河北承德寬城滿族自治縣招聘社區(qū)工作者40人筆試歷年參考題庫(kù)附帶答案詳解
- 2025年金頭黑色密胺筷項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)長(zhǎng)方形木爐座行業(yè)投資前景及策略咨詢研究報(bào)告
- 金壇區(qū)蘇科版六年級(jí)上冊(cè)勞動(dòng)《08兔子燈》教案
- 精密配電列頭柜介紹講義
- 技能大師工作室建設(shè)PPT幻燈片課件(PPT 66頁(yè))
- 廣東部分地區(qū)的暴雨強(qiáng)度公式
- 鋼琴基礎(chǔ)教程1教案
- 上??萍及妫瓢妫┏踔袛?shù)學(xué)八年級(jí)下冊(cè)全冊(cè)教案
- 裝修工程竣工驗(yàn)收?qǐng)?bào)告模板
- 泥水盾構(gòu)簡(jiǎn)介
- 簡(jiǎn)單娛樂(lè)yy頻道設(shè)計(jì)模板
- 防止機(jī)組非計(jì)劃停運(yùn)措施(鍋爐專業(yè))
- 最常用漢字個(gè)
評(píng)論
0/150
提交評(píng)論