![《Java EE企業(yè)級框架技術(shù)及案例實戰(zhàn)-Spring+Spring MVC+MyBatis(微課版)》全套教學(xué)課件_第1頁](http://file4.renrendoc.com/view12/M08/1E/1E/wKhkGWdRf8yADXIaAACKqt4TwlA894.jpg)
![《Java EE企業(yè)級框架技術(shù)及案例實戰(zhàn)-Spring+Spring MVC+MyBatis(微課版)》全套教學(xué)課件_第2頁](http://file4.renrendoc.com/view12/M08/1E/1E/wKhkGWdRf8yADXIaAACKqt4TwlA8942.jpg)
![《Java EE企業(yè)級框架技術(shù)及案例實戰(zhàn)-Spring+Spring MVC+MyBatis(微課版)》全套教學(xué)課件_第3頁](http://file4.renrendoc.com/view12/M08/1E/1E/wKhkGWdRf8yADXIaAACKqt4TwlA8943.jpg)
![《Java EE企業(yè)級框架技術(shù)及案例實戰(zhàn)-Spring+Spring MVC+MyBatis(微課版)》全套教學(xué)課件_第4頁](http://file4.renrendoc.com/view12/M08/1E/1E/wKhkGWdRf8yADXIaAACKqt4TwlA8944.jpg)
![《Java EE企業(yè)級框架技術(shù)及案例實戰(zhàn)-Spring+Spring MVC+MyBatis(微課版)》全套教學(xué)課件_第5頁](http://file4.renrendoc.com/view12/M08/1E/1E/wKhkGWdRf8yADXIaAACKqt4TwlA8945.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3JavaEE企業(yè)級框架技術(shù)及案例實戰(zhàn)第1章JAVAEE企業(yè)級開發(fā)基礎(chǔ)第2章MyBatis基礎(chǔ)第3章Mybatis核心組件第4章MyBatis關(guān)聯(lián)映射第5章Mybatis緩存第6章spring基礎(chǔ)第7章SpringIOC第8章SpringAOP第9章Spring事務(wù)管理第10章SpringMVC基礎(chǔ)第11章SpringMVC開發(fā)詳解第12章
深入使用SpringMVC第13章
綜合實踐
企業(yè)辦公管理系統(tǒng)全套可編輯PPT課件
E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3第一章JAVAEE企業(yè)級開發(fā)基礎(chǔ)全套可編輯PPT課件
-了解企業(yè)級應(yīng)用的概念和特點-掌握Web分層架構(gòu)的設(shè)計思想-理解SSM框架的基本概念和特點010203項目需求背景知識項目介紹經(jīng)典問題強化本章小結(jié)0102030405E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3項目需求01項目需求01項目經(jīng)理老王:小王,最近公司有一個CRM系統(tǒng)需要開發(fā),目前已經(jīng)進入需求調(diào)研階段了,這個系統(tǒng)需要使用到當(dāng)前流行的JAVAEE企業(yè)級開發(fā)框架SSM,你趁這段時間工作不是很忙,把這幾個框架系統(tǒng)學(xué)習(xí)一下吧。程序員小王:王經(jīng)理,什么是CRM系統(tǒng)呢?這個名詞我是第一次聽說。項目經(jīng)理老王:CRM是客戶關(guān)系管理系統(tǒng)的英文簡稱。它是指利用軟件、硬件和網(wǎng)絡(luò)技術(shù),為企業(yè)建立一個客戶信息收集、管理、分析、應(yīng)用的信息系統(tǒng)。系統(tǒng)以客戶數(shù)據(jù)的管理為核心,記錄企業(yè)在市場營銷和銷售過程中與客戶發(fā)生的各種交互行為、各類活動狀態(tài),并提供不同的數(shù)據(jù)模型,為后期的市場分析與決策提供支持。程序員小王:噢,我明白CRM系統(tǒng)是什么了,那么要如何實現(xiàn)這個系統(tǒng)呢?項目經(jīng)理老王:要實現(xiàn)CRM系統(tǒng),需要用到JAVAEE企業(yè)級開發(fā)框架SSM,即Spring、SpringMVC、Mybatis三個框架。它們經(jīng)過了多年的發(fā)展,無論是技術(shù)還是社區(qū)都已經(jīng)很成熟了,目前是企業(yè)開發(fā)Web項目的首選。程序員小王:謝謝您的釋疑,在項目正式開始之前,我會先深入了解CRM系統(tǒng)的需求,然后認真學(xué)習(xí)SSM框架,采取學(xué)練結(jié)合的方式完成項目的開發(fā)。功能描述01本書將帶領(lǐng)讀者圍繞CRM系統(tǒng)功能的實現(xiàn),以深入淺出地方式掌握SSM框架的原理及應(yīng)用。以下是本書待實現(xiàn)的系統(tǒng)功能:用戶管理:該模塊允許管理員創(chuàng)建、編輯和刪除系統(tǒng)用戶賬戶。用戶可以有不同的角色和權(quán)限,以便限制他們在系統(tǒng)中的訪問和操作范圍。權(quán)限管理:該模塊允許管理員定義不同用戶角色的權(quán)限級別。例如,某些用戶可以查看客戶信息,而另一些用戶可以編輯或刪除客戶信息。資源權(quán)限管理:該模塊擴展了權(quán)限管理功能,允許用戶為特定的資源(如客戶、產(chǎn)品)定義權(quán)限,以便可以更精細地控制用戶對不同數(shù)據(jù)的訪問權(quán)限。日志管理:該模塊可以跟蹤用戶活動和系統(tǒng)事件,記錄用戶的登錄、操作、修改和其它關(guān)鍵事件,以便在需要時進行審計和故障排查。產(chǎn)品管理:該模塊允許用戶維護公司的產(chǎn)品信息,包括產(chǎn)品名稱、描述、定價等。這對于銷售人員在創(chuàng)建報價和訂單時非常有用。訂單管理:該模塊用于跟蹤和管理客戶的訂單。包括創(chuàng)建新訂單、編輯訂單、訂單狀態(tài)跟蹤。以上是構(gòu)建一個CRM系統(tǒng)所需的核心功能,各模塊的實現(xiàn)將在本書的后續(xù)章節(jié)依次給予呈現(xiàn)。E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3背景知識02知識導(dǎo)圖02企業(yè)級應(yīng)用開發(fā)介紹02企業(yè)級應(yīng)用是指那些為商業(yè)組織、大型企業(yè)而創(chuàng)建的應(yīng)用程序。這些企業(yè)級應(yīng)用具有用戶數(shù)多、數(shù)據(jù)量大、事務(wù)密集等特點,往往能夠滿足未來業(yè)務(wù)需求的變化,易于升級和維護。一個好的企業(yè)級應(yīng)用的體系架構(gòu),通常來自優(yōu)秀的解決方案,往往在設(shè)計開始時就要考慮其架構(gòu)的合理性、靈活性和健壯性,以便既能滿足企業(yè)用戶的復(fù)雜需求也能為今后的系統(tǒng)升級改造留有余地,從而增強系統(tǒng)在多變的商業(yè)社會中的適應(yīng)性,為客戶帶來最大利益。Web分層設(shè)計思想02企業(yè)級Web項目通常采用分層架構(gòu),將系統(tǒng)分為表現(xiàn)層、業(yè)務(wù)層和數(shù)據(jù)訪問層。其中表現(xiàn)層(UI層)負責(zé)接收客戶端請求,并向客戶端返回處理后的結(jié)果。業(yè)務(wù)層(Service層)負責(zé)系統(tǒng)的業(yè)務(wù)邏輯處理以及與表現(xiàn)層和數(shù)據(jù)訪問層進行交互。數(shù)據(jù)訪問層(DAO/Mapper層)負責(zé)與數(shù)據(jù)庫進行交互,將數(shù)據(jù)持久化到數(shù)據(jù)庫中。
Mybatis框架介紹02MyBatis是一個優(yōu)秀的基于Java的持久層框架,它內(nèi)部封裝了JDBC,使開發(fā)者只需關(guān)注SQL語句本身,而不用再花費精力去處理諸如注冊驅(qū)動、創(chuàng)建Connection、配置Statement等與業(yè)務(wù)無關(guān)的操作。它以XML或注解的方式配置要執(zhí)行的各種Statement和PreparedStatement,通過Java對象與SQL動態(tài)參數(shù)進行映射以生成最終執(zhí)行的SQL語句,最后再由MyBatis將執(zhí)行后的結(jié)果映射成Java對象并返回。Spring框架介紹02Spring是一個優(yōu)秀的開源框架,是為了解決企業(yè)級應(yīng)用開發(fā)存在的復(fù)雜問題而創(chuàng)建的,它將面向接口編程的設(shè)計思想貫穿于框架的設(shè)計與實現(xiàn)中,利用依賴注入(DI)、控制反轉(zhuǎn)(IOC)、面向切面(AOP)等技術(shù)解決了各模塊之間的高耦合問題,使得開發(fā)出的系統(tǒng)具有松耦合、可擴展、可維護等特點。SpringMVC框架介紹02SpringMVC是一種基于MVC設(shè)計模式的的輕量級Web框架,它出自Spring全家桶,可以與Spring框架進行無縫整合。SpringMVC采用三層架構(gòu)思想,對Web各層進行了解耦,可以方便開發(fā)者構(gòu)建出易于擴展的Web應(yīng)用程序。E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3項目介紹03業(yè)務(wù)場景03業(yè)務(wù)場景描述:項目經(jīng)理老王:小王,最近對CRM系統(tǒng)的需求調(diào)研完成了,系統(tǒng)的主要功能包括用戶管理、權(quán)限管理、資源權(quán)限管理、日志管理、產(chǎn)品管理、訂單管理、客戶管理等。程序員小王:這些功能看上去有些難度,我有點擔(dān)心自己是否能勝任。項目經(jīng)理老王:不用擔(dān)心,我們可以先通過系統(tǒng)的數(shù)據(jù)庫設(shè)計和功能效果圖來加深對業(yè)務(wù)需求的理解,然后從用戶管理、權(quán)限管理、日志管理這幾個簡單模塊入手,采用邊學(xué)邊練的方法逐步掌握SSM框架的使用,等基礎(chǔ)打扎實后就可以實現(xiàn)更復(fù)雜的功能了。程序員小王:太好了,那我們現(xiàn)在就開始吧!數(shù)據(jù)庫設(shè)計03CRM系統(tǒng)中包含的部分業(yè)務(wù)表product產(chǎn)品表
orders訂單表
member會員表
syslog系統(tǒng)日志表
users用戶表
users-role用戶角色表
role角色表
role-permission角色資源表
traveller游客表
logs業(yè)務(wù)日志表
order-traveller游客訂單表項目整體結(jié)構(gòu)03CRM系統(tǒng)使用SSM框架作為核心開發(fā)技術(shù),利用Maven作為項目構(gòu)建工具,數(shù)據(jù)庫采用Mysql8,開發(fā)工具使用IntelliJIDEA。graduationdesign-dao:存放數(shù)據(jù)持久層的接口和實現(xiàn)類,主要負責(zé)與數(shù)據(jù)庫進行交互。graduationdesign-domain:存放數(shù)據(jù)庫的映射實體類,主要是各個數(shù)據(jù)表對應(yīng)的POJO封裝類。graduationdesign-service:存放業(yè)務(wù)層接口及其實現(xiàn)類,用于完成系統(tǒng)的業(yè)務(wù)邏輯處理。graduationdesign-utils:存放項目所需使用的各種工具類。graduationdesign-web:存放前端視圖文件,主要負責(zé)與用戶進行交互。項目搭建03數(shù)據(jù)庫導(dǎo)入項目搭建項目展示E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3經(jīng)典問題強化04經(jīng)典問題強化04什么是企業(yè)級應(yīng)用,它具有什么特點?什么是CRM系統(tǒng)、CMS系統(tǒng)和ERP系統(tǒng)?CRM系統(tǒng)的常用功能有哪些?E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3本章小結(jié)05
本章小結(jié)05本章首先對企業(yè)級應(yīng)用開發(fā)的概念及其特點進行簡單介紹,然后通過Web分層思想引出了SSM框架,接著對三個框架的基本概念做了描述。最后帶領(lǐng)讀者搭建并演示CRM系統(tǒng),提升讀者對業(yè)務(wù)需求的理解,為后續(xù)的學(xué)習(xí)與實踐打下基礎(chǔ)。E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3本章結(jié)束謝謝!E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3第二章MyBatis基礎(chǔ)-理解MyBatis相關(guān)概念-理解工廠設(shè)計模式,能區(qū)分簡單工廠模式、工廠方法模式、抽象工廠模式-熟悉MyBatis的優(yōu)點,了解JDBC、Hibernate與之對比差別-掌握MyBatis的體系結(jié)構(gòu),熟悉三層架構(gòu)的功能-熟練掌握MyBatis的開發(fā)流程-熟練掌握MyBatis入門程序,能根據(jù)需求設(shè)計程序010203040506項目需求背景知識項目實現(xiàn)經(jīng)典問題強化本章小結(jié)0102030405E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3項目需求01項目需求01項目經(jīng)理老王:小王,我們這次開發(fā)的CRM系統(tǒng)將會使用MyBatis框架,你對這個框架熟悉么?程序員小王:聽說過這個框架,現(xiàn)在還不太熟悉,接下來我快速學(xué)習(xí)一下,然后完成產(chǎn)品查詢功能。項目經(jīng)理老王:好,在學(xué)習(xí)和應(yīng)用MyBatis時,需要重點掌握工廠設(shè)計模、MyBatis體系結(jié)構(gòu)、MyBatis開發(fā)流程。只有深入理解這些,才能很好的運用框架完成產(chǎn)品查詢功能。程序員小王:知道了,那我就先熟悉下MyBatis框架,快速入門學(xué)習(xí)一下,然后應(yīng)用到項目實踐中。功能描述01產(chǎn)品查詢:可以根據(jù)產(chǎn)品的某些條件查詢對應(yīng)的產(chǎn)品,比如產(chǎn)品名稱等。默認情況下,我們不需要任何條件,系統(tǒng)會進行全量查詢。E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3背景知識02知識導(dǎo)圖02工廠設(shè)計模式02工廠設(shè)計模式是MyBatis框架中的一個重要底層技術(shù)。例如,SqlSessionFactory就使用了工廠模式來完成對象的創(chuàng)建。為了更好的理解MyBatis工作原理,有必要先學(xué)習(xí)下工廠設(shè)計模式。什么是工程設(shè)計模式?工廠模式是將創(chuàng)建對象的具體過程屏蔽隔離起來,從而達到更高的靈活性,工廠模式可以分為三類:簡單工廠模式(SimpleFactory)工廠方法模式(FactoryMethod)抽象工廠模式(AbstractFactory)簡單工廠模式02簡單工廠模式的核心是定義一個創(chuàng)建對象的接口,將對象的創(chuàng)建和本身的業(yè)務(wù)邏輯分離,降低系統(tǒng)的耦合度,使得兩個修改起來相對容易些,當(dāng)以后實現(xiàn)改變時,只需要修改工廠類即可。工廠方法模式02和簡單工廠模式中工廠負責(zé)生產(chǎn)所有產(chǎn)品相比,工廠方法模式將工廠抽象化,并定義一個創(chuàng)建對象的接口。每增加新產(chǎn)品,只需增加該產(chǎn)品以及對應(yīng)的具體實現(xiàn)工廠類,由具體工廠類決定要實例化的產(chǎn)品是哪個,將對象的創(chuàng)建與實例化延遲到子類,這樣工廠的設(shè)計就符合“開閉原則”了,擴展時不必去修改原來的代碼。在使用時,用戶只需知道產(chǎn)品對應(yīng)的具體工廠,關(guān)注具體的創(chuàng)建過程,甚至不需要知道具體產(chǎn)品類的類名,當(dāng)我們選擇哪個具體工廠時,就已經(jīng)決定了實際創(chuàng)建的產(chǎn)品是哪個了。抽象工廠模式02抽象工廠模式主要用于創(chuàng)建相關(guān)對象的家族。當(dāng)一個產(chǎn)品族中需要被設(shè)計在一起工作時,通過抽象工廠模式,能夠保證客戶端始終只使用同一個產(chǎn)品族中的對象;并且通過隔離具體類的生成,使得客戶端不需要明確指定具體生成類;所有的具體工廠都實現(xiàn)了抽象工廠中定義的公共接口,因此只需要改變具體工廠的實例,就可以在某種程度上改變整個軟件系統(tǒng)的行為。抽象工廠模式02MyBatis概述02MyBatis的前身是apache的一個開源項目iBatis,2010年這個項目由apachesoftwarefoundation遷移到了googlecode,并且改名為MyBatis。2013年11月遷移到Github。MyBatis是一個優(yōu)秀的基于Java的持久層框架,它內(nèi)部封裝了JDBC,使開發(fā)者只需關(guān)注SQL語句本身,而不用再花費精力去處理諸如注冊驅(qū)動、創(chuàng)建Connection、配置Statement等繁雜過程。Mybatis通過XML或注解的方式將要執(zhí)行的各種Statement、PreparedStatement等配置起來,并通過Java對象和Statement中SQL動態(tài)參數(shù)進行映射生成最終執(zhí)行的SQL語句,最后由MyBatis框架執(zhí)行SQL并將結(jié)果映射成Java對象并返回。JDBC與MyBatis02JDBC與MyBatis的關(guān)系是怎樣的呢?MyBatis內(nèi)部封裝了JDBC,與JDBC相比,MyBatis具有以下幾個特點:(1)封裝了JDBC對數(shù)據(jù)庫的各種操作,減少代碼。DAO層代碼可以通過現(xiàn)有插件直接生成,編寫代碼也變得非常的方便,大大提高編碼效率和準(zhǔn)確性(相比手工coding的失誤等);(2)MyBatis連接池管理、緩存管理等帶來代碼性能優(yōu)勢和可靠性。MyBatis增加了連接池、一、二級緩存,大大提高了代碼性能。此外,MyBatis作為一個工業(yè)級的開源框架,其代碼是久經(jīng)考驗的。(3)一致的編碼風(fēng)格大大減少了代碼的溝通交流成本。Hibernate與MyBatis02Hibernate框架是提供了全面的數(shù)據(jù)庫封裝機制的“全自動”O(jiān)RM,即實現(xiàn)了POJO和數(shù)據(jù)庫表之間的映射,以及SQL的自動生成和執(zhí)行。相對于此,MyBatis只能算作是“半自動”O(jiān)RM。其著力點是,在POJO類與SQL語句之間的映射關(guān)系。也就是說,MyBatis并不會為程序員自動生成SQL語句。具體的SQL需要程序員自己編寫,然后通過SQL語句映射文件,將SQL所需的參數(shù),以及返回的結(jié)果字段映射到指定POJO。因此,MyBatis成為了“全自動”O(jiān)RM的一種有益補充。與Hibernate相比,MyBatis具有以下幾個特點:(1)在XML文件中配置SQL語句,實現(xiàn)了SQL語句與代碼的分離,給程序的維護帶來了很大便利。(2)因為需要程序員自己去編寫SQL語句,程序員可以結(jié)合數(shù)據(jù)庫自身的特點靈活控制SQL語句,因此能夠?qū)崿F(xiàn)比Hibernate等全自動ORM框架更高的查詢效率,能夠完成復(fù)雜查詢。(3)簡單,易于學(xué)習(xí),易于使用,上手快MyBatis體系結(jié)構(gòu)02Mybatis的整體架構(gòu)從宏觀上可分為三層,分別是基礎(chǔ)支持層、核心處理層和接口層。MyBatis的開發(fā)流程02E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3項目實現(xiàn)03業(yè)務(wù)場景03業(yè)務(wù)場景描述:項目經(jīng)理老王:小王,我想了解一下你在MyBatis方面的掌握情況,能否詳細介紹一下你學(xué)到了哪些內(nèi)容?程序員小王:嗯,經(jīng)過這兩天的學(xué)習(xí)。我理解了工廠方法設(shè)計模式,這是MyBatis核心技術(shù)之一,之后了解了JDBC、MyBatis、Hibernate的區(qū)別以及Mybatis的優(yōu)勢、最后重點學(xué)習(xí)了MyBatis的開發(fā)流程:創(chuàng)建核心配置文件,創(chuàng)建映射文件,創(chuàng)建SqlSessionFactory,創(chuàng)建SqlSession,執(zhí)行增刪改查,關(guān)閉資源。我覺得現(xiàn)在可以使用MyBatis技術(shù)來實現(xiàn)產(chǎn)品模塊的查詢功能了。項目經(jīng)理老王:很好,那就開始吧數(shù)據(jù)庫設(shè)計03列名列類型描述idint主鍵productNumvarchar(50)產(chǎn)品編號productNamevarchar(50)產(chǎn)品名稱cityNamevarchar(50)城市名稱DepartureTimedate時間productPricedouble(11,0)價格productDescvarchar(250)產(chǎn)品描述productStatusint產(chǎn)品狀態(tài)產(chǎn)品信息表設(shè)計數(shù)據(jù)庫設(shè)計03產(chǎn)品信息表實現(xiàn)CREATETABLE`product`(`id`intNOTNULLAUTO_INCREMENT,`productNum`varchar(50)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULL,`productName`varchar(50)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULL,`cityName`varchar(50)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULL,`DepartureTime`dateNULLDEFAULTNULL,`productPrice`double(11,0)NULLDEFAULTNULL,`productDesc`varchar(250)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULL,`productStatus`intNULLDEFAULTNULL,`imgPath`varchar(255)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULL,PRIMARYKEY(`id`)USINGBTREE)ENGINE=InnoDBAUTO_INCREMENT=29CHARACTERSET=utf8COLLATE=utf8_general_ciROW_FORMAT=DYNAMIC;數(shù)據(jù)庫設(shè)計03產(chǎn)品信息表初始化數(shù)據(jù)INSERTINTO`product`VALUES(1,'001','九陽電飯煲','云南','0020-04-07',2100,'云南歡迎你',0,'/upload/7fa53dfee949485ea77833ae2bd70556.jpeg');INSERTINTO`product`VALUES(2,'002','格力空調(diào)','昆明','2020-06-06',1800,'昆明歡迎你',1,'/upload/7fa53dfee949485ea77833ae2bd70556.jpeg');INSERTINTO`product`VALUES(3,'003','華為手機','上海','2020-05-08',3800,'魔都歡迎你',1,'/upload/7fa53dfee949485ea77833ae2bd70556.jpeg');INSERTINTO`product`VALUES(4,'004','小米電視','北京','2020-05-09',5800,'北京我來了',1,'/upload/7fa53dfee949485ea77833ae2bd70556.jpeg');INSERTINTO`product`VALUES(5,'005','格力空氣炸鍋','昆明','2020-04-07',18000,'深圳歡迎你',1,'/upload/7fa53dfee949485ea77833ae2bd70556.jpeg');INSERTINTO`product`VALUES(6,'006','小米電視','昭通','2020-05-08',1200,'昭通大山包',0,'/upload/7fa53dfee949485ea77833ae2bd70556.jpeg');項目具體包及其作用03①bean:存放JavaBean類:ProductBean是產(chǎn)品類的pojo對象②dao:存放訪問數(shù)據(jù)庫的方法ProductDao是產(chǎn)品類的Dao層接口,在這里定義了查詢所有產(chǎn)品的方法③util:存放工具類MybatisUtils是工具類,用來生成SqlSessionFactory獲取SqlSession④resources:存放資源文件,包括mapper接口映射文件和數(shù)據(jù)庫配置信息文件以及mybatis的核心配置文件。ProductMapper.xml是產(chǎn)品類的Mapper映射文件,具體的SQL語句就寫在這perties描述數(shù)據(jù)庫的連接配置信息mybatis-config.xml是MyBatis的核心配置文件⑤test:存放測試類AppTest是測試類用來測試查詢所有產(chǎn)品創(chuàng)建Maven項目03創(chuàng)建Maven項目03創(chuàng)建Maven項目03導(dǎo)入項目依賴03在pom.xml中導(dǎo)入項目所需要的依賴包<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency>…………省略……………<!--單元測試相關(guān)包--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency>
數(shù)據(jù)庫配置信息03使用外部文件配置連接數(shù)據(jù)庫所需要信息,包括驅(qū)動程序driver,連接地址url,用戶名username和密碼passworddriver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/ssm?userSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCusername=rootpassword=root配置mybatis核心文件03創(chuàng)建mybatis-config.xml核心配置文件,這里主要配置的是JDBC連接信息<!--連接我們的perties屬性文件--><propertiesresource="perties"/><environmentsdefault="development"><environmentid="development"><transactionManagertype="JDBC"/><dataSourcetype="POOLED"><!--這里是從屬性文件perties文件讀取的鍵值對數(shù)據(jù),用于連接數(shù)據(jù)庫--><propertyname="driver"value="${driver}"/><propertyname="url"value="${url}"/><propertyname="username"value="${username}"/><propertyname="password"value="${password}"/></dataSource></environment></environments>配置mybatis核心文件03創(chuàng)建mybatis-config.xml核心配置文件,這里主要配置的是Mapper映射文件<mappers><!--這里是改為自己接口的映射文件的路徑,下面的第二張圖片為例子--><mapperresource="Mapper/ProductMapper.xml"/></mappers>工具類03工具類的主要功能是,讀取XML信息,初始化數(shù)據(jù)庫連接,事實上底層是我們之前學(xué)習(xí)過得JDBC連接,所以拿到這個連接,我們就可以執(zhí)行剛才ProductMapper.xml中的SQL語句static{try{//使用Mybatis第一步:獲取SqlSessionFactoryStringresource="mybatis-config.xml";InputStreaminputStream=Resources.getResourceAsStream(resource);sqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream);}catch(IOExceptione){e.printStackTrace();}}工具類03工具類的主要功能是,讀取XML信息,初始化數(shù)據(jù)庫連接,事實上底層是我們之前學(xué)習(xí)過得JDBC連接,所以拿到這個連接,我們就可以執(zhí)行剛才ProductMapper.xml中的SQL語句//既然有了SqlSessionFactory,顧名思義,我們需要獲得SqlSession的實例//SqlSession提供了在數(shù)據(jù)庫執(zhí)行SQL命令所需的所有方法publicstaticSqlSessiongetSqlSession(){returnsqlSessionFactory.openSession();}產(chǎn)品實體03創(chuàng)建產(chǎn)品實體,Bean中主要是一些字段,跟表設(shè)計相對應(yīng),以存儲對應(yīng)的字段信息
publicclassProductBean{privateintid;privateStringproductNum;privateStringproductName;privateStringcityName;privateDatedate;privateBigDecimalproductPrice;privateStringproductDesc;privateintproductStatus;
省略set、get方法}用戶Mapper及實現(xiàn)03在UserMapper中添加insertUser(Useruser)方法完成添加用戶功能。packageduct.dao;importduct.bean.ProductBean;importjava.util.List;publicinterfaceProductDao{publicList<ProductBean>getProductBeanList();}<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN""/dtd/mybatis-3-mapper.dtd"><!--namespace=綁定一個對應(yīng)的Dao/Mapper接口,相當(dāng)于實現(xiàn)了接口--><mappernamespace="duct.dao.ProductDao"><!--id=使用的方法名,resultType=返回結(jié)果集的類型(全路徑)--><selectid="getProductBeanList"resultType="duct.bean.ProductBean">select*fromproduct</select></mapper>
測試產(chǎn)品信息的查詢功能03測試類的功能是完成產(chǎn)品信息的查詢,因為假定開始產(chǎn)品信息不多,此處做的是全量查詢。。@Testpublicvoidtest(){//第一步:獲取sqlSession對象SqlSessionsqlSession=MybatisUtils.getSqlSession();//使用getMapper執(zhí)行sql語句ProductDaouserdao=sqlSession.getMapper(ProductDao.class);List<ProductBean>productBeanList=userdao.getProductBeanList();for(ProductBeanproduct:productBeanList){System.out.println(product);}//關(guān)閉sqlSessionsqlSession.close();}E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3經(jīng)典問題強化04經(jīng)典問題強化04如何快速掌握MyBatis框架?MyBatis框架適用場景?MyBatis的本質(zhì)及原理?E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3本章小結(jié)05
本章小結(jié)05
在本章節(jié)中通過在CRM系統(tǒng)中查詢產(chǎn)品模塊學(xué)習(xí)了MyBatis快速入門開發(fā)及對應(yīng)的核心知識點。
首先對數(shù)據(jù)持久層進行了簡單的介紹,主要介紹了JDBC和Hibernate,并分別與MyBatis框架進行了對比,接著介紹了MyBatis的體系結(jié)構(gòu)和工作原理,最后講解了如何使用MyBatis框架來進行CRM項目需求的開發(fā)。通過本章的學(xué)習(xí),可以了解MyBatis的概念和作用,理解MyBatis中的相關(guān)常用術(shù)語,熟悉MyBatis中的優(yōu)勢以及與主流持久層框架的區(qū)別,并能夠掌握項目MyBatis開發(fā)技術(shù),最后真正的掌握MyBatis在項目中的實際應(yīng)用。E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3本章結(jié)束謝謝!E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3第三章
MyBatis核心組件-掌握MyBatis核心組件及其作用-掌握利用SqlSession實現(xiàn)增刪改查操作的方法-掌握SQLMapper映射器的原理、配置與使用方法010203項目需求背景知識項目實現(xiàn)經(jīng)典問題強化本章小結(jié)0102030405E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3項目需求01項目需求01項目經(jīng)理老王:小王,項目中的產(chǎn)品模塊完成的怎么樣了?程序員小王:已經(jīng)完成了產(chǎn)品模塊的顯示列表功能,正在設(shè)計和實現(xiàn)產(chǎn)品創(chuàng)建功能,這里需要深入理解MyBatis的核心組件,包括SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、SQLMapper等內(nèi)容,我對這些還不是很清楚,需要深入思考來消化知識點。項目經(jīng)理老王:好的,在這里特別要注意下SqlSession的工作原理及使用方法,以及SQLMapper中的各種標(biāo)簽的配置,只有搞清楚這些才能在項目中靈活運用MyBatis。程序員小王:收到,一定按時保質(zhì)完成任務(wù),不耽誤項目進度。功能描述01創(chuàng)建新產(chǎn)品:填寫產(chǎn)品的相關(guān)信息,比如產(chǎn)品編號、產(chǎn)品名稱、產(chǎn)品價格等,進行保存,并且可以在創(chuàng)建新產(chǎn)品時設(shè)置產(chǎn)品狀態(tài),默認產(chǎn)品狀態(tài)為關(guān)閉。E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3背景知識02知識導(dǎo)圖02學(xué)習(xí)并掌握Mybatis,就要深入理解Mybatis的核心組件。Mybatis四大核心組件是:SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、SQLMapper。MyBatis核心組件02這四個組件是前后依賴關(guān)系,SqlSessionFactory是SqlSessionFactoryBuilder通過build方法創(chuàng)建的,而SqlSession是SqlSessionFactory生產(chǎn)的,SqlSession對象又通過加載SQLMapper執(zhí)行SQL語句,完成數(shù)據(jù)庫的操作SqlSessionFactoryBuilder02作為Mybatis的核心組件之一,它直接翻譯為中文是SQL會話工廠建造者,也有人管它叫作MyBatis的構(gòu)造器。作用是根據(jù)配置信息或者代碼來生成SqlSessionFactory。SqlSessionFactoryBuilder對象在創(chuàng)建完工廠對象后,就完成了其使命,即可被銷毀。所以,一般會將該對象創(chuàng)建為一個方法內(nèi)的局部對象,方法結(jié)束,對象銷毀。SqlSessionFactoryBuilder有五個build()方法,每一種都允許從不同的資源中創(chuàng)建一個SqlSessionFactory實例。SqlSessionFactorybuild(InputStreaminputstream)SqlSessionFactorybuild(InputStreaminputstream,Stringenvironment)SqlSessionFactorybuild(InputStreaminputStream,Propertiesproperties)SqlSessionFactorybuild(InputStreaminputStream,Stringenv,Propertiesprops)SqlSessionFactorybuild(Configurationconfig)SqlSessionFactory02SqlSessionFactory直接翻譯為SQL會話工廠,它是一個接口,用于創(chuàng)建SqlSession的實例。簡單來講,SqlSessionFactory是MyBatis的關(guān)鍵對象,它是單個數(shù)據(jù)庫映射關(guān)系經(jīng)過編譯后的內(nèi)存鏡像。SqlSessionFactory的實例是MyBatis應(yīng)用的中心,它唯一的作用就是生產(chǎn)MyBatis的核心接口對象SqlSession,它的責(zé)任是明確的、唯一的。所以,我們往往會采用單例模式處理它。SqlSessionFactory提供了六個方法創(chuàng)建SqlSession實例SqlSessionopensession()Sqlsessionopensession(booleanautocommit)SqlSessionopensession(connectionconnection)Sqlsessionopensession(TransactionIsolationLevellevel)SqlSessionopenSession(ExecutorTypeexecType,TransactionIsolationLevellevel)SqlSessionopensession(ExecutorTypeexecType)SqlSessionopensession(ExecutorTypeexecType,booleanautocommit)SqlSessionopensession(ExecutorTypeexecType,Connectionconnection)Confiaurationgetconfiouration():SqlSession接口02
Mybatis是通過SqlSession來實現(xiàn)與數(shù)據(jù)庫會話的,相當(dāng)于JDBC中的一個Connection對象,是整個Mybatis運行的核心。SqlSession接口提供了查詢,插入,更新,刪除等方法,Mybatis中所有的數(shù)據(jù)庫交互都由SqlSession來完成。一個SqlSession對應(yīng)著一次數(shù)據(jù)庫會話,一次會話以SqlSession對象的創(chuàng)建開始,以SqlSession對象的關(guān)閉結(jié)束。SqlSession簡單的工作流程如下:SqlSession接口02SqlSession是MyBatis的核心接口,主要負責(zé)與數(shù)據(jù)庫進行交互,它提供了語句執(zhí)行、批量更新、事務(wù)控制、本地緩存、對象關(guān)閉等五類二十余種方法<T>Tselectone(stringstatement,0bjectparameter)<E>ListE>selectList(Stringstatement,objectparameter)<K,V>Map<K,V>selectMap(Stringstatement,Objectparameter,stringmapKey)intinsert(Stringstatement,0bjectparameter)intupdate(Stringstatement,objectparameter)intdelete(Stringstatement,objectparameter)<E>List<E>selectList(Stringstatement,0bjectparameter,RowBoundsrowBounds)<K,V>Map<,>selectNap(Stringstatement,Objectparameter,StringmapKey,RowBoundsrowoounds)voidselect(Stringstatement,Objectparameter,ResultHandler<T>handler)voidselect(Stringstatement,Objectparameter,RowBoundsowBounds,ResultHandlerThandler)SQLMapper相關(guān)概念02SQLMapper(映射器)是MyBatis中最重要的組件之一,它主要作用是將Java類與數(shù)據(jù)庫中的SQL語句進行映射,從而實現(xiàn)數(shù)據(jù)的持久化操作。下面是SQLMapper相關(guān)的一些概念:①XML映射器:XML映射器是MyBatis中一組數(shù)據(jù)庫映射文件,里面定義了對業(yè)務(wù)操作相關(guān)的各種SQL語句(如SELECT、INSERT、UPDATE和DELETE等)以及如何將查詢結(jié)果映射為Java對象的規(guī)則。②接口映射器:除了XML映射器外,MyBatis還允許定義Java接口作為映射器。這些接口的方法名與XML文件中映射標(biāo)簽的ID屬性值一致,以便可以像調(diào)用Java方法一樣執(zhí)行SQL語句。③結(jié)果映射:在XML映射文件中,可以定義結(jié)果映射,用于指定如何將SQL查詢結(jié)果的列映射到Java對象的屬性值上。④動態(tài)SQL:SQLMapper支持動態(tài)SQL,它可以根據(jù)傳入的參數(shù)動態(tài)生成SQL語句。MyBatis提供了一系列的XML標(biāo)簽(如<if>,<choose>,<foreach>等)來支持這種功能。⑤類型處理器:MyBatis允許自定義類型處理器,它以特定的方式處理Java對象和SQL數(shù)據(jù)類型之間的映射關(guān)系。SQLMapper元素標(biāo)簽02SQLMapper映射器既可以使用注解也可以使用XML定義,但是注解的方式在企業(yè)級應(yīng)用中較少,這是因為在面對復(fù)雜的SQL語句時,注解會顯得很無力。因此我們重點學(xué)習(xí)XML的實現(xiàn)方式。映射器的XML實現(xiàn)主要通過配置相應(yīng)的標(biāo)簽來實現(xiàn)。這些標(biāo)簽用于定義SQL語句、配置結(jié)果映射規(guī)則等。元素名稱描述<select>定義一個SQL查詢語句,用于檢索數(shù)據(jù)??梢灾付▍?shù)映射和結(jié)果集映射規(guī)則。<insert>定義一個SQL插入語句,用于向數(shù)據(jù)庫插入數(shù)據(jù)。可以指定參數(shù)映射。<update>定義一個SQL更新語句,用于修改數(shù)據(jù)庫中的數(shù)據(jù)??梢灾付▍?shù)映射。<delete>定義一個SQL刪除語句,用于從數(shù)據(jù)庫中刪除數(shù)據(jù)。可以指定參數(shù)映射。<resultType>定義結(jié)果集的映射規(guī)則,可以為映射類的全路徑,這樣MyBatis可以將結(jié)果集映射成對應(yīng)JavaBean;也可以為int、double、float等基本類型參數(shù);還可以使用別名,但要符合別名命名規(guī)范,且不能與resultMap同時使用。<resultMap>定義結(jié)果集的映射規(guī)則,將數(shù)據(jù)庫查詢結(jié)果映射到Java對象??梢灾付械綄傩缘挠成?。<sql>定義可重用的SQL代碼片段,用于減少重復(fù)的SQL代碼。<include>引入先前定義的SQL片段,提高XML配置的可讀性和可維護性。<typeAlias>為Java類型設(shè)置短的別名,以簡化XML配置中的類型引用。SQLMapper開發(fā)02XML方式實現(xiàn)映射器主要分為Mapper接口定義、Mapper映射文件配置、編寫SQL映射語句、編寫結(jié)果映射、Mapper接口注冊、映射器調(diào)用等環(huán)節(jié),下面以一個User對象的增刪改查操作為例詳細講解映射器的配置和使用方法packagecom.example.mapper;importcom.example.model.User;publicinterfaceUserMapper{UserselectUser(intid);intinsertUser(Useruser);intupdateUser(Useruser);intdeleteUser(intid);}SQLMapper開發(fā)02
在<mapper>標(biāo)簽中,可以定義與數(shù)據(jù)庫操作相關(guān)的SQL映射語句,如<select>、<insert>、<update>、<delete>等,例如下面映射文件中就包含了對User對象的增刪改查操作,如代碼如下:<mappernamespace="com.example.mapper.UserMapper"><selectid="selectUser"resultType="com.example.model.User">SELECT*FROMusersWHEREid=#{id}</select><insertid="insertUser">INSERTINTOusers(name,age)VALUES(#{name},#{age})</insert><updateid="updateUser">UPDATEusersSETname=#{name},age=#{age}WHEREid=#{id}</update><deleteid="deleteUser">DELETEFROMusersWHEREid=#{id}</delete></mapper>SQLMapper開發(fā)02編寫結(jié)果映射:可以使用<resultType>或<resultMap>標(biāo)簽進行結(jié)果集映射<resultMapid="userResultMap"type="com.example.model.User"><idproperty="id"column="user_id"/><resultproperty="name"column="user_name"/><resultproperty="age"column="user_age"/></resultMap><selectid="selectUserWithResultMap"resultMap="userResultMap">SELECT*FROMusersWHEREid=#{id}</select>SQLMapper開發(fā)02Mapper接口注冊:在MyBatis核心配置文件中對Mapper接口(UserMapper.java)進行注冊<configuration><mappers><mapperclass="com.example.mapper.UserMapper"/></mappers></configuration>映射器調(diào)用02
映射器調(diào)用:首先需要獲取SqlSession對象,然后通過getMapper方法獲取Mapper接口實例,最后調(diào)用對應(yīng)的成員方法完成數(shù)據(jù)庫操作try(SqlSessionsqlSession=sqlSessionFactory.openSession()){UserMapperuserMapper=sqlSession.getMapper(UserMapper.class);Useruser=userMapper.selectUser(1);}E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3項目實現(xiàn)03業(yè)務(wù)場景03業(yè)務(wù)場景描述:項目經(jīng)理老王:小王,我想了解一下你在MyBatis核心技術(shù)方面的掌握情況,能否詳細介紹一下你學(xué)到了哪些內(nèi)容?程序員小王:當(dāng)然可以。我利用周末的時間將MyBatis的核心內(nèi)容進行了深入的學(xué)習(xí),掌握了MyBatis的四大核心組件SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、SQLMapper的功能、原理及使用方法,現(xiàn)在有信心利用所學(xué)知識,實現(xiàn)產(chǎn)品模塊中的新建產(chǎn)品功能。項目經(jīng)理老王:好的,期待你的表現(xiàn)。數(shù)據(jù)庫設(shè)計03列名列類型描述idint主鍵productNumvarchar(50)產(chǎn)品編號productNamevarchar(50)產(chǎn)品名稱cityNamevarchar(50)城市名稱DepartureTimedate時間productPricedouble(11,0)價格productDescvarchar(250)產(chǎn)品描述productStatusint產(chǎn)品狀態(tài)產(chǎn)品信息表設(shè)計創(chuàng)建包、接口和對應(yīng)的XML文件03
因為第二章中已經(jīng)實現(xiàn)了產(chǎn)品查詢功能,因此本章將在該項目的基礎(chǔ)上繼續(xù)實現(xiàn)“新建產(chǎn)品”功能。
項目在duct包下新增mapper目錄,用于存放訪問數(shù)據(jù)庫的接口和映射文件,其中ProductMapper.java是產(chǎn)品數(shù)據(jù)訪問的Mapper接口,里面定義了新增產(chǎn)品的方法。ProductMapper.xml是產(chǎn)品的映射文件,里面定義了插入產(chǎn)品信息的SQL語句。代碼實現(xiàn)031.實現(xiàn)ProductMapper.java、ProductMapper.xml2.編輯mybatis-config.xml配置文件3.實現(xiàn)AppTest測試產(chǎn)品信息的創(chuàng)建功能03測試類的功能是完成產(chǎn)品創(chuàng)建@Testpublicvoidtest(){//獲取sqlSession對象SqlSessionsqlSession=MybatisUtils.getSqlSession();//獲取Mapper對象ProductMapperuserdao=sqlSession.getMapper(ProductMapper.class);ProductBeanproductBean=newProductBean();productBean.setProductName("長城一日游");
。。。。。//執(zhí)行插入操作intcount=userdao.insertProduct(productBean);System.out.println(count);//提交更新
sqlSmit();
//關(guān)閉sqlSession對象sqlSession.close();}E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3經(jīng)典問題強化04經(jīng)典問題強化04SqlSessionFactory都有哪些功能?SqlSession有哪些特點?SQLMapper映射文件的作用是什么?E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3本章小結(jié)05
本章小結(jié)05本章主要對MyBatis的核心組件進行了詳細講解。首先介紹了MyBatis核心組件的功能和特點,強調(diào)了它們在整個框架中的地位。然后深入探討了SQLMapper映射器的核心原理和使用方法以及如何利用SqlSession完成對數(shù)據(jù)庫的增、刪、改、查等操作。最后通過CRM系統(tǒng)中的新建產(chǎn)品模塊的實現(xiàn),來強化讀者的實踐能力。E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3本章結(jié)束謝謝!E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3第四章MyBatis關(guān)聯(lián)映射-掌握動態(tài)SQL主要元素的使用-理解關(guān)聯(lián)關(guān)系的基本概念-掌握基于XML的一對一關(guān)聯(lián)映射方式-掌握基于XML的一對多關(guān)聯(lián)映射方式-掌握基于XML的多對多關(guān)聯(lián)映射方式-掌握基于注解的一對一關(guān)聯(lián)映射方式-掌握基于注解的一對多關(guān)聯(lián)映射方式-掌握基于注解的多對多關(guān)聯(lián)映射方式0102030405060708項目需求背景知識項目實現(xiàn)經(jīng)典問題強化本章小結(jié)0102030405E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3項目需求01項目需求01項目經(jīng)理老王:小王,之前我們已經(jīng)學(xué)習(xí)了MyBatis的基礎(chǔ)以及核心組件,這些都是運用Mybatis進行開發(fā)的基礎(chǔ)。程序員小王:現(xiàn)在使用Mybatis完成一個單表的增刪改查功能我已經(jīng)掌握了,但是在實際的業(yè)務(wù)中,表與表之間的關(guān)聯(lián)關(guān)系可不是只有單表這種簡單情況,還有多表之間的關(guān)聯(lián)查詢以及一些復(fù)雜的sql查詢,這些使用Mybatis可以實現(xiàn)么?項目經(jīng)理老王:可以的,Mybatis可不是只能做單表的查詢,它還可以使用動態(tài)SQL完成復(fù)雜的sql查詢,比如比較查詢、模糊查詢、批量查詢,以及可以實現(xiàn)多表之間的關(guān)聯(lián)查詢?,F(xiàn)在客戶要求系統(tǒng)能針對不同的用戶可以操作的模塊不同,需要實現(xiàn)一個權(quán)限管理功能。程序員小王:對于權(quán)限管理功能會涉及到用戶、角色、資源幾張表,我在學(xué)習(xí)Mybatis的關(guān)聯(lián)映射之后就可以實現(xiàn)這個功能模塊。功能描述01角色管理:權(quán)限列表頁面展示了當(dāng)前所有角色的列表,每個角色都有對應(yīng)的描述和操作。用戶可以進行增加、刪除、修改等操作。為了方便用戶同時操作多個角色,提供了全選和反選功能。功能描述01權(quán)限詳情:展示某個角色所擁有的權(quán)限列表,一個角色可以擁有多個權(quán)限,例如ADMIN角色是管理員,它擁有角色管理、資源管理、用戶管理、商品管理、日志管理等多個權(quán)限。功能描述01資源權(quán)限列表:該頁面展示了所有資源權(quán)限列表,每個資源權(quán)限都對應(yīng)著對某一特定資源的管理,例如用戶管理權(quán)限就可以對用戶進行管理。功能描述01資源權(quán)限詳情頁面可以查看某一資源所對應(yīng)的所有角色及其權(quán)限,這些角色具有對該資源的管理能力。不同的角色所擁有的資源權(quán)限是不同的,比如開發(fā)人員可以對日志進行管理,而銷售人員可以對商品進行管理。E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3背景知識02知識導(dǎo)圖02動態(tài)SQL02動態(tài)SQL是MyBatis的強大特性之一。如果使用過JDBC或其它類似的框架,應(yīng)該能理解根據(jù)不同條件拼接SQL語句的麻煩,例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號等。關(guān)聯(lián)關(guān)系02通過之前的學(xué)習(xí),我們已經(jīng)能夠使用MyBatis以面向?qū)ο蟮姆绞綄?shù)據(jù)庫進行操作,但這些操作只是針對單表。在實際的開發(fā)中,對數(shù)據(jù)庫的操作常常會涉及多張表,這在面向?qū)ο笾芯蜁成涑蓪ο笈c對象之間的三種關(guān)聯(lián)關(guān)系。下面對這些關(guān)系進行具體說明:一對一關(guān)系:是指對于實體集A與實體集B,A中的每一個實體最多與B中一個實體有關(guān)系。反之,在實體集B中的每個實體最多與實體集A中的一個實體有關(guān)系。例如每個公民只能擁有一個身份證號,而每個身份證號只能屬于一個公民。一對多關(guān)系:是指實體集A與實體集B中至少有N(N>0)個實體有關(guān)系,并且實體集B中每一個實體至多與實體集A中一個實體有
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025裝修工程泥工承包合同
- 7讓弦發(fā)出高低不同的聲音 說課稿-2024-2025學(xué)年科學(xué)四年級上冊教科版
- 2024-2025學(xué)年高中歷史 專題四 王安石變法 一 積貧積弱的北宋教學(xué)說課稿 人民版選修1
- 14 請幫我一下吧 第一課時 說課稿-2023-2024學(xué)年道德與法治一年級下冊統(tǒng)編版
- 6我們神圣的國土 第1課時(說課稿)-部編版道德與法治五年級上冊
- 2023八年級英語下冊 Module 1 Feelings and impressions Unit 2 I feel nervous when I speak Chinese第三課時說課稿 (新版)外研版
- 2024-2025學(xué)年新教材高中語文 第二單元 6.2 文氏外孫入村收麥說課稿(3)部編版必修上冊
- 27一個粗瓷大碗 說課稿-2024-2025學(xué)年語文三年級上冊統(tǒng)編版
- 11《變廢為寶有妙招》(說課稿)2023-2024學(xué)年統(tǒng)編版道德與法治四年級下冊
- Unit 1 Letters in our life 第2課時(說課稿)-2024-2025學(xué)年教科版(2024)英語三年級上冊
- 2024電力系統(tǒng)安全規(guī)定
- 脊柱骨折與脊髓損傷護理課件
- 小學(xué)二年級語文上冊閱讀理解專項訓(xùn)練20篇(含答案)
- 科技論文圖表等規(guī)范表達
- 高考寫作指導(dǎo)議論文標(biāo)準(zhǔn)語段寫作課件32張
- 2021年普通高等學(xué)校招生全國英語統(tǒng)一考試模擬演練八省聯(lián)考解析
- 華能火力發(fā)電機組節(jié)能降耗技術(shù)導(dǎo)則(2023年版)
- 基礎(chǔ)知識3500個常用漢字附拼音
- 企業(yè)易制毒化學(xué)品管理培訓(xùn)
- JJF(紡織)072-2018紡織滾筒式烘干機校準(zhǔn)規(guī)范
- 羊水栓塞的應(yīng)急預(yù)案演練腳本
評論
0/150
提交評論