版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
框架簡介MyBatis簡介MyBatis環(huán)境的搭建與入門程序MyBatis的基礎(chǔ)操作MyBatis的工作原理第1章
初識MyBatis2024/1/29本課程目標2學完本門課程后,你能夠掌握MyBatis、Spring、SpringMVC三大框架技術(shù)搭建SpringMVC+Spring+MyBatis框架,并在此框架上熟練進行項目開發(fā)學習方法3方法查看框架官方文檔和源碼多動手多思考學習目標/Target4了解框架的概念和優(yōu)點了解MyBatis框架的概念和優(yōu)點掌握MyBatis環(huán)境搭建掌握MyBatis入門程序的編寫熟悉MyBatis工作原理章節(jié)概述/Summary5
實際開發(fā)中,隨著業(yè)務(wù)的發(fā)展,軟件系統(tǒng)變得越來越復雜,如果所有的軟件都從底層功能開始開發(fā),那將是一個漫長而繁瑣的過程。此外,團隊協(xié)作開發(fā)時,由于沒有統(tǒng)一的調(diào)用規(guī)范,系統(tǒng)會出現(xiàn)大量的重復功能的代碼,給系統(tǒng)的二次開發(fā)和維護帶來不便。為解決上述問題,框架應(yīng)運而生。框架實現(xiàn)了很多基礎(chǔ)性的功能,開發(fā)人員不需要關(guān)心底層功能操作,只需要專心地實現(xiàn)所需要的業(yè)務(wù)邏輯,大大提高了開發(fā)人員的工作效率。當前市場上的Java
EE開發(fā)主流框架有Spring、SpringMVC和Mybatis等,本章主要對框架的概念以及Mybatis的基礎(chǔ)知識進行介紹。目錄/CONTENTS框架簡介MyBatis的基礎(chǔ)操作MyBatis環(huán)境的搭建與入門程序MyBatis簡介6MyBatis的工作原理14325框架簡介01第1章初識MyBatis為什么需要框架技術(shù)8如何更快更好完成某主題PPT?使用PPT模板思考使用模板有什么好處呢?不用考慮布局、排版等,提高效率可專心在內(nèi)容上結(jié)構(gòu)統(tǒng)一,便于閱讀新手也可以作出專業(yè)的PPT提問問題
“框架(Framework)”一詞最早出現(xiàn)在建筑領(lǐng)域,指的是在建造房屋前期構(gòu)建的建筑骨架。在編程領(lǐng)域,框架就是應(yīng)用程序的骨架,開發(fā)人員可以在這個骨架上加入自己的東西,搭建出符合自己需求的應(yīng)用系統(tǒng)。什么是框架框架的概念9軟件框架
軟件框架是一種通用的、可復用的軟件環(huán)境,它提供特定的功能,促進軟件應(yīng)用、產(chǎn)品和解決方案的開發(fā)工作。軟件框架會包含支撐程序、編譯器、代碼、庫、工具集以及API,它把所有這些部件匯集在一起,以支持項目或系統(tǒng)的開發(fā)。
軟件框架可以形象地比喻成我們在蓋樓房時,用梁+柱子+承重墻搭建起來的鋼筋混凝土結(jié)構(gòu)的建筑框架,它是整個建筑的骨架。而實現(xiàn)的軟件功能,也就像在這個建筑框架中所要實現(xiàn)的不同類型、功能的房子,比如健身房、商場、酒店、飯店等。框架的概念10框架的概念11框架技術(shù)是一個應(yīng)用程序的半成品提供可重用的公共結(jié)構(gòu)按一定規(guī)則組織的一組組件分析優(yōu)勢不用再考慮公共問題專心在業(yè)務(wù)實現(xiàn)上結(jié)構(gòu)統(tǒng)一,易于學習、維護新手也可寫出好程序
在早期Java
EE應(yīng)用開發(fā)中,企業(yè)開發(fā)人員是利用JSP+Servlet技術(shù)進行軟件應(yīng)用和系統(tǒng)開發(fā)的,使用該技術(shù)會有以下兩個弊端。
(1)軟件應(yīng)用和系統(tǒng)可維護性差
如果全部采用JSP+Servlet技術(shù)進行軟件的開發(fā),因為分層不夠清晰,業(yè)務(wù)邏輯的實現(xiàn)無法單獨分離出來,從而造成系統(tǒng)后期維護困難。
(2)代碼重用性低
企業(yè)希望以最快的速度,開發(fā)出最穩(wěn)定、最實用的軟件。如果系統(tǒng)不使用框架,每次開發(fā)系統(tǒng)都需要重新開發(fā),需要投入大量的人力物力,并且重新開發(fā)的代碼可能具有更多的漏洞,這就增加了系統(tǒng)出錯的風險。早起Java
EE開發(fā)弊端
框架的優(yōu)勢12
相比于使用JSP+Servlet技術(shù)進行軟件開發(fā),使用框架有以下優(yōu)勢。
1.提高開發(fā)效率:如果采用成熟、穩(wěn)健的框架,那么一些通用的基礎(chǔ)工作,如事務(wù)處理、安全性、數(shù)據(jù)流控制等都可以交給框架處理,程序員只需要集中精力完成系統(tǒng)的業(yè)務(wù)邏輯設(shè)計,降低了開發(fā)難度。
2.提高代碼規(guī)范性和可維護性:當多人協(xié)同進行開發(fā)時,代碼的規(guī)范性和可維護性就變得非常重要。成熟的框架都有嚴格的代碼規(guī)范,能保證團隊整體的開發(fā)風格統(tǒng)一。
3.提高軟件性能:使用框架進行軟件開發(fā),可以減少程序中的冗余代碼。例如,使用Spring框架開發(fā)時,通過Spring的IOC特性,可以將對象之間的依賴關(guān)系交給Spring控制,方便解耦,簡化開發(fā);使用MyBatis框架開發(fā)時,MyBatis提供了XML標簽,支持動態(tài)的SQL,開發(fā)人員無需在類中編寫大量的SQL語句,只需要在配置文件中進行配置即可??蚣軆?yōu)勢框架的優(yōu)勢13
Spring是一個開源框架,是為了解決企業(yè)應(yīng)用程序開發(fā)復雜性而創(chuàng)建的,其主要優(yōu)勢之一就是分層架構(gòu)。Spring提供了更完善的開發(fā)環(huán)境,可以為POJO(PlainOrdinaryJavaObject,普通Java對象)對象提供企業(yè)級的服務(wù)。Spring框架當前主流框架14
SpringMVC是一個Web開發(fā)框架,可以將它理解為Servlet。在MVC模式中,SpringMVC作為控制器(Controller)用于實現(xiàn)模型與視圖的數(shù)據(jù)交互,是結(jié)構(gòu)最清晰的。
SpringMVC框架采用松耦合、可插拔的組件結(jié)構(gòu),具有高度可配置性,與其他的MVC框架相比,具有更強的擴展性和靈活性。SpringMVC框架當前主流框架15
MyBatis是Apache的一個開源項目iBatis,2010年這個項目由ApacheSoftwareFoundation遷移到了GoogleCode,并且改名為MyBatis,2013年11月MyBatis又被遷移到Github。MyBatis是一個優(yōu)秀的持久層框架,它可以在實體類和SQL語句之間建立映射關(guān)系,是一種半自動化的ORM(Object/RelationMapping,即對象關(guān)系映射)實現(xiàn)。MyBatis封裝性要低于Hibernate,但它性能優(yōu)越、簡單易學,在互聯(lián)網(wǎng)應(yīng)用的開發(fā)中被廣泛使用。
上述介紹的Struts2、Hibernate、Spring、SpringMVC和MyBatis等都是Java
EE開發(fā)中最常見的框架,它們能極大地提高JavaEE應(yīng)用的開發(fā)效率,并能保證應(yīng)用具有穩(wěn)定的性能,得到了開發(fā)者廣泛地支持。MyBatis框架當前主流框架16
Hibernate
是一個優(yōu)秀的持久層框架,它可以在Java對象與關(guān)系型數(shù)據(jù)庫之間建立某種映射,以實現(xiàn)Java對象的直接存取。
使用JDBC連接來讀寫數(shù)據(jù)庫,過程繁瑣。Hibernate框架通過簡單配置和編碼即可替代JDBC繁瑣的程序代碼。Hibernate已經(jīng)成為當前主流的數(shù)據(jù)庫持久層框架,被廣泛應(yīng)用在企業(yè)開發(fā)中。Hibernate框架
當前主流框架17SpringBoot框架是Pivotal團隊基于Spring開發(fā)的全新框架,其設(shè)計初衷是為了簡化Spring的配置,使用戶能夠構(gòu)建獨立運行的程序,提高開發(fā)效率。SpringBoot框架本身并不提供Spring框架的核心特性及擴展功能,它只是用于快速、敏捷地開發(fā)新一代基于Spring框架的應(yīng)用,同時它還集成了大量的第三方類庫(如Jackson、JDBC、Redis等),使用戶只需少量配置就能完成相應(yīng)功能。SpringBoot框架
當前主流框架18SpringCloud是一系列框架的有序集合,為開發(fā)人員構(gòu)建微服務(wù)架構(gòu)提供了完整的解決方案,它利用SpringBoot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)的開發(fā)。例如,配置管理、服務(wù)發(fā)現(xiàn)、控制總線等操作,都可以使用SpringBoot做到一鍵啟動和部署??梢哉f,SpringCloud將SpringBoot框架進行了再封裝,屏蔽掉了復雜的配置和實現(xiàn)原理,具有簡單易懂、易部署和易維護等特點。SpringCloud框架
當前主流框架19MyBatis簡介02第1章初識MyBatis數(shù)據(jù)持久化概念21持久化是程序數(shù)據(jù)在瞬時狀態(tài)和持久狀態(tài)間轉(zhuǎn)換的過程內(nèi)存姓名:小穎性別:女特長:英語JDBC…Stmt.execute("…")…持久狀態(tài)JDBC的劣勢
JDBC是Java程序?qū)崿F(xiàn)數(shù)據(jù)訪問的基礎(chǔ),JDBC的劣勢主要有以下幾個方面。(1)數(shù)據(jù)庫連接創(chuàng)建、釋放頻繁會造成系統(tǒng)資源浪費,從而影響系統(tǒng)性能。(2)
SQL語句在代碼中硬編碼,造成代碼不易維護。在實際應(yīng)用的開發(fā)中,SQL變化的可能性較大。在傳統(tǒng)JDBC編程中,SQL變動需要改變Java代碼,違反了開閉原則。(3)用PreparedStatement向占有位符號傳參數(shù)存在硬編碼,因為SQL語句的where條件不一定,可能多也可能少,修改SQL需要修改代碼,造成系統(tǒng)不易維護。(4)JDBC對結(jié)果集解析存在硬編碼(查詢列名),SQL變化導致解析代碼變化,造成系統(tǒng)不易維護。
傳統(tǒng)JDBC的劣勢22ORM框架23ORM(ObjectRelationalMapping)編寫程序的時候,以面向?qū)ο蟮姆绞教幚頂?shù)據(jù)保存數(shù)據(jù)的時候,卻以關(guān)系型數(shù)據(jù)庫的方式存儲ORM解決方案包含下面四個部分在持久化對象上執(zhí)行基本的增、刪、改、查操作對持久化對象提供一種查詢語言或者API對象關(guān)系映射工具提供與事務(wù)對象交互、執(zhí)行檢查、延遲加載以及其他優(yōu)化功能
屬性字段nameuser_namesexuser_Sexskilluser_skillUser對象name:小穎sex:女skill:英語、程序設(shè)計對象-關(guān)系映射什么是MyBatis
MyBatis是一個支持普通SQL查詢、存儲過程以及高級映射的持久層框架,它消除了幾乎所有的JDBC代碼和參數(shù)的手動設(shè)置以及對結(jié)果集的檢索,使用簡單的XML或注解進行配置和原始映射,將接口和Java的POJO映射成數(shù)據(jù)庫中的記錄,使得Java開發(fā)人員可以使用面向?qū)ο蟮木幊趟枷雭聿僮鲾?shù)據(jù)庫。MyBatis概述24MyBatis簡介25MyBatis前身是iBatis,本是Apache的一個開源的項目官方網(wǎng)站ORM框架實體類和SQL語句之間建立映射關(guān)系特點基于SQL語法,簡單易學能了解底層封裝過程SQL語句封裝在配置文件中,便于統(tǒng)一管理與維護,降低程序的耦合度方便程序代碼調(diào)試什么是MyBatis26MyBatis框架也被稱之為ORM(Object/RelationMapping,即對象關(guān)系映射)框架。所謂的ORM就是一種為了解決面向?qū)ο笈c關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)類型不匹配的技術(shù),它通過描述Java對象與數(shù)據(jù)庫表之間的映射關(guān)系,自動將Java應(yīng)用程序中的對象持久化到關(guān)系型數(shù)據(jù)庫的表中。ORM框架的工作原理解決JDBC編程劣勢
針對前面提到的JDBC編程的劣勢,MyBatis提供了以下解決方案,具體如下。
問題一:數(shù)據(jù)庫鏈接創(chuàng)建、釋放頻繁會造成系統(tǒng)資源浪費,從而影響系統(tǒng)性能。
解決方案:在SqlMapConfig.xml中配置數(shù)據(jù)鏈接池,使用連接池管理數(shù)據(jù)庫鏈接。
問題二:SQL語句在代碼中硬編碼,造成代碼不易維護。在實際應(yīng)用的開發(fā)中,SQL變化的可能較大。在傳統(tǒng)JDBC編程中,SQL變動需要改變Java代碼,違反了開閉原則。
解決方案:MyBatis將SQL語句配置在MyBatis的映射文件中,實現(xiàn)了與Java代碼的分離。MyBatis概述27解決JDBC編程劣勢
問題三:使用preparedStatement向占有位符號傳參數(shù)存在硬編碼,因為SQL語句的where條件不一定,可能多也可能少,修改SQL需要修改代碼,造成系統(tǒng)不易維護。
解決方案:MyBatis自動將Java對象映射至SQL語句,通過Statement中的parameterType定義輸入?yún)?shù)的類型。
問題四:JDBC對結(jié)果集解析存在硬編碼(查詢列名),SQL變化導致解析代碼變化,造成系統(tǒng)不易維護。
解決方案:MyBatis自動將SQL執(zhí)行結(jié)果映射至Java對象,通過Statement中的resultType定義輸出結(jié)果的類型。MyBatis概述28與Hibernate直觀對比29HibernateHibernate是一個全表映射的框架。通常開發(fā)者只需定義好持久化對象到數(shù)據(jù)庫表的映射關(guān)系,就可以通過Hibernate提供的方法完成持久層操作。開發(fā)者并不需要熟練的掌握SQL語句的編寫,Hibernate會根據(jù)制定的存儲邏輯,自動的生成對應(yīng)的SQL,并調(diào)用JDBC接口來執(zhí)行,所以其開發(fā)效率會高于MyBatis。Hibernate也存在一些缺點,例如它在多表關(guān)聯(lián)時,對SQL查詢的支持較差;更新數(shù)據(jù)時,需要發(fā)送所有字段;不支持存儲過程;不能通過優(yōu)化SQL來優(yōu)化性能等。MyBatisMyBatis是一個半自動映射的框架?!鞍胱詣印笔窍鄬τ贖ibernate全表映射而言的,MyBatis需要手動匹配提供POJO、SQL和映射關(guān)系,而Hibernate只需提供POJO和映射關(guān)系即可。與Hibernate相比,雖然使用MyBatis手動編寫SQL要比使用Hibernate的工作量大,但MyBatis可以配置動態(tài)SQL并優(yōu)化SQL,可以通過配置決定SQL的映射規(guī)則,它還支持存儲過程等。對于一些復雜的和需要優(yōu)化性能的項目來說,顯然使用MyBatis更加合適。Hibernate與MyBatis有什么區(qū)別?MyBatis環(huán)境的搭建
與入門程序03第1章初識MyBatis百貨中心供應(yīng)鏈管理系統(tǒng)介紹2-131總體功能模塊百貨中心供應(yīng)鏈管理系統(tǒng)用戶登錄用戶登錄登錄驗證用戶退出用戶管理查詢用戶搜索條件查詢分頁査詢添加用戶修改用戶刪除用戶用戶權(quán)限管理添加用戶權(quán)限修改用戶權(quán)限刪除用戶權(quán)限供應(yīng)商管理查詢供應(yīng)商搜索條件查詢分頁査詢添加供應(yīng)商修改供應(yīng)商刪除供應(yīng)商商品管理查詢商品搜索條件查詢分頁査詢添加商品修改商品刪除商品商品類別管理查詢商品類別添加商品類別刪除商品類別采購訂單管理查詢采購訂單搜索條件查詢分頁査詢添加采購訂單修改采購訂單刪除采購訂單銷售訂單管理查詢銷售訂單搜索條件查詢分頁査詢新聞管理查詢新聞搜索條件查詢分頁査詢添加新聞修改新聞刪除新聞演示:課堂貫穿案例(百貨中心供應(yīng)鏈管理系統(tǒng))百貨中心供應(yīng)鏈管理系統(tǒng)介紹2-232數(shù)據(jù)庫設(shè)計表用戶表(表名:tb_user)用戶權(quán)限表(表名:tb_role)供應(yīng)商表(表名:tb_provider)商品類別表(表名:tb_product_category)商品表(表名:tb_product)采購訂單表(表名:tb_bill)銷售訂單表(表名:tb_order)銷售訂單關(guān)聯(lián)表(表名:tb_order_detail)新聞表(表名:tb_news)邏輯外鍵關(guān)聯(lián)演示:數(shù)據(jù)庫表結(jié)構(gòu)MyBatis環(huán)境搭建的步驟
使用MyBatis框架進行數(shù)據(jù)庫開發(fā)之前,需要先搭建MyBatis環(huán)境,MyBatis環(huán)境搭建主要有如下基本步驟。(1)創(chuàng)建工程;
(2)引入相關(guān)依賴;(3)數(shù)據(jù)庫準備;(4)編寫數(shù)據(jù)庫連接信息配置文件;(5)編寫核心配置文件和映射文件。MyBatis環(huán)境搭建33創(chuàng)建工程:(1)啟動IntelliJIDEA開發(fā)工具,單擊工具欄中的File→new→Project選項,彈出NewProject對話框。MyBatis環(huán)境搭建34STEP01創(chuàng)建工程:(2)在NewProject對話框中,單擊左側(cè)菜單中的“Maven”選項,然后單擊“Next”按鈕,進入項目命名對話框。MyBatis環(huán)境搭建35STEP01創(chuàng)建工程:(3)在“Name”文本框中對Maven項目命名,在“Location”文本框選擇項目存放的路徑。單擊“ArtifactCoordinates”選項可以填寫GroupId、ArtifactId和Version。其中GroupId通常設(shè)置為公司倒置的網(wǎng)絡(luò)域名,如“cn.dsscm”;ArtifactId通常設(shè)置為項目名;Version使用IDEA默認版本即可。填寫完成之后單擊“Finish”按鈕完成項目創(chuàng)建。MyBatis環(huán)境搭建36STEP01引入相關(guān)依賴:由于本項目要連接數(shù)據(jù)庫以及對程序進行測試,所以需要在項目的pom.xml文件中導入MySQL驅(qū)動包、Junit測試包、MyBatis的核心包等相關(guān)依賴。MyBatis環(huán)境搭建37STEP02<dependencies><dependency>
<groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.13</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency>……</dependencies><build><resources><resource>
<directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>首次引依賴需要聯(lián)網(wǎng)IDEA默認集成的Maven,所以在第一次引入依賴時,需要在聯(lián)網(wǎng)狀態(tài)下進行,且引入依賴需要較長時間,耐心等待到依賴引入完成即可。
MyBatis環(huán)境搭建38創(chuàng)建數(shù)據(jù)庫:在MySQL中導入名稱為“dsscm.sql”素材文件,創(chuàng)建一個名稱為dsscm的數(shù)據(jù)庫。MyBatis環(huán)境搭建39STEP03創(chuàng)建數(shù)據(jù)庫連接信息配置文件:在項目的src/main/resources目錄下創(chuàng)建數(shù)據(jù)庫連接的配置文件,這里將其命名為perties,在該文件中配置數(shù)據(jù)庫連接的參數(shù)。MyBatis環(huán)境搭建40STEP04driver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/dsscm?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=falseusername=rootpassword=123456創(chuàng)建日志配置文件:在項目的src/main/resources目錄下創(chuàng)建perties文件MyBatis環(huán)境搭建41STEP041. log4j.rootLogger=debug,stdout,R2. 3. log4j.appender.stdout=org.apache.log4j.ConsoleAppender4. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout5. 6. #Patterntooutputthecaller'sfilenameandlinenumber.7. log4j.appender.stdout.layout.ConversionPattern=%5p[%t](%F:%L)-%m%n8. 9. log4j.appender.R=org.apache.log4j.RollingFileAppender10. log4j.appender.R.File=example.log11. 12. log4j.appender.R.MaxFileSize=100KB13. #Keeponebackupfile14. log4j.appender.R.MaxBackupIndex=515. 16. log4j.appender.R.layout=org.apache.log4j.PatternLayout17. log4j.appender.R.layout.ConversionPattern=%p%t%c-%m%nSTEP05創(chuàng)建MyBatis的核心配置文件:在項目的src/main/resources目錄下創(chuàng)建MyBatis的核心配置文件,該文件主要用于項目的環(huán)境配置,如數(shù)據(jù)庫連接相關(guān)配置等。核心配置文件可以隨意命名,但通常將其命名為mybatis-config.xml。<configuration><propertiesresource="perties"/><environmentsdefault="development"><environmentid="development"><transactionManagertype="JDBC"/><dataSourcetype="POOLED">
<propertyname="driver"value="${mysql.driver}"/><propertyname="url"value="${mysql.url}"/><propertyname="username"value="${mysql.username}"/><propertyname="password"value="${mysql.password}"/></dataSource>
</environment></environments></configuration>MyBatis環(huán)境搭建42共性問題集中講解43常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解演示案例44查詢用戶表記錄數(shù)
需求說明搭建MyBatis開發(fā)環(huán)境,實現(xiàn)用戶表記錄數(shù)查詢在IDEA中創(chuàng)建工程,導入MyBatis的jar包創(chuàng)建MyBatis配置文件mybatis-config.xml,配置數(shù)據(jù)庫信息編寫實體類User.java編寫SQL映射文件UserMapper.xml編寫測試類UserMapperTest.java,運行輸出結(jié)果分析實現(xiàn)步驟12345MyBatis的入門程序45創(chuàng)建UserMapper.xml:創(chuàng)建包“cn.dsscm.dao”并在里面配置映射文件,該文件也是一個XML文件,命名為UserMapper.xmlSTEP01<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN""/dtd/mybatis-3-mapper.dtd"><mappernamespace="cn.dsscm.dao.UserMapper"> <!--查詢用戶表記錄數(shù)--> <selectid="count"resultType="int"> SELECTcount(1) FROMtb_user </select></mapper>MyBatis的入門程序46創(chuàng)建測試類:在src/test/java目錄下創(chuàng)建cn.dsscm.test包,在該包下創(chuàng)建UserMapperTest.java進行功能測試。STEP02實現(xiàn)步驟讀取全局配置文件:mybatis-config.xml創(chuàng)建SqlSessionFactory對象,此對象可以完成對配置文件的讀取創(chuàng)建SqlSession對象,此對象的作用是調(diào)用mapper文件進行數(shù)據(jù)操作關(guān)閉SqlSession對象@Testpublicvoidtest1(){ //創(chuàng)建SqlSession對象
SqlSessionsqlSession=null; try{ //獲取mybatis-config.xml的輸入流
InputStreamis=Resources.getResourceAsStream("mybatis-config.xml"); //創(chuàng)建SqlSessionFactory對象
SqlSessionFactoryfactory=newSqlSessionFactoryBuilder().build(is); intcount=0; //創(chuàng)建sqlSession sqlSession=factory.openSession(); //調(diào)用mapper文件來對數(shù)據(jù)進行操作,必須先把mapper文件引入到mybatis-config.xml中
count=sqlSession.selectOne("cn.dsscm.dao.UserMapper.count"); logger.debug("UserMapperTestcount>"+count); }catch(IOExceptione){ e.printStackTrace(); }finally{ //關(guān)閉SqlSession對象
sqlSession.close(); }}共性問題集中講解47常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解與JDBC直觀對比48MyBatis將代碼分解包裝對數(shù)據(jù)庫的數(shù)據(jù)源的管理包括事務(wù)管理通過配置文件,獲取返回結(jié)果到Java對象的映射通過配置文件,管理SQL及輸入?yún)?shù)的映射MyBatis框架優(yōu)缺點49優(yōu)點與JDBC相比,減少了50%以上的代碼量最簡單的持久化框架,小巧并簡單易學SQL代碼從程序代碼中徹底分離,可重用提供XML標簽,支持編寫動態(tài)SQL提供映射標簽,支持對象與數(shù)據(jù)庫的ORM字段映射缺點SQL語句編寫工作量大,對開發(fā)人員有一定要求數(shù)據(jù)庫移植性差MyBatis專注于SQL本身,是一個足夠靈活的DAO層解決方案,適用于性能要求較高或者需求多變的互聯(lián)網(wǎng)項目!技能訓練50查詢供應(yīng)商表記錄數(shù)需求說明搭建MyBatis開發(fā)環(huán)境,實現(xiàn)供應(yīng)商表記錄數(shù)查詢創(chuàng)建Maven工程,導入MyBatis的jar包創(chuàng)建MyBatis配置文件mybatis-config.xml,配置數(shù)據(jù)庫信息編寫實體類Provider.java編寫SQL映射文件ProviderMapper.xml編寫測試類ProviderMapperTest.java,運行輸出結(jié)果練習提示完成時間:20分鐘共性問題集中講解51常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解MyBatis
的基礎(chǔ)操作04第1章初識MyBatis演示案例53查詢用戶
需求說明搭建MyBatis開發(fā)環(huán)境,實現(xiàn)用戶表記錄數(shù)查詢在IDEA中創(chuàng)建工程,導入MyBatis的jar包創(chuàng)建MyBatis配置文件mybatis-config.xml,配置數(shù)據(jù)庫信息編寫實體類User.java編寫SQL映射文件UserMapper.xml編寫測試類UserMapperTest.java,運行輸出結(jié)果分析實現(xiàn)步驟12345查詢用戶
54根據(jù)用戶編號查詢用戶信息。1根據(jù)用戶名模糊查詢用戶信息。2
在實際開發(fā)中,查詢操作通常都會涉及到單條數(shù)據(jù)的精確查詢,以及多條數(shù)據(jù)的模糊查詢。1.根據(jù)用戶編號查詢用戶信息查詢用戶
55創(chuàng)建POJO實體:在項目的src/main/java目錄下創(chuàng)建cn.dsscm.pojo包,在該包下創(chuàng)建User.java類STEP01importjava.util.Date;publicclassUser{ privateIntegerid;//id privateStringuserCode;//用戶編碼
privateStringuserName;//用戶名稱
privateStringuserPassword;//用戶密碼
privateIntegergender;//性別
privateDatebirthday;//出生日期
privateStringphone;//電話
…….
//省略Getter、Setter和toString方法}1.根據(jù)用戶編號查詢用戶信息查詢用戶
56編輯映射文件UserMapper.xml:在映射文件UserMapper.xml,添加根據(jù)用戶id查詢用戶信息列表的配置STEP021. <?xmlversion="1.0"encoding="UTF-8"?>2. <!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN"3. "/dtd/mybatis-3-mapper.dtd">4. 5. <mappernamespace="cn.dsscm.dao.user.UserMapper">6. <!--根據(jù)用戶id查詢用戶信息列表--><selectid="getUserListById"parameterType="Integer"resultType="cn.dsscm.pojo.User">8. SELECT*FROMdsscm_user9. WHEREid=#{id}10. </select>11. </mapper>1.根據(jù)用戶編號查詢用戶信息查詢用戶
57編輯測試方法:編輯UserMapperTest.java文件,為其添加根據(jù)用戶ID查詢用戶信息的操作的測試方法STEP03@TestpublicvoidfindUserByIdTest(){ Useruser=null; SqlSessionsqlSession=null; try{ //1獲取mybatis-config.xml的輸入流
InputStreamis=Resources.getResourceAsStream("mybatis-config.xml";); //2創(chuàng)建SqlSessionFactory對象,完成對配置文件的讀取
SqlSessionFactoryfactory=newSqlSessionFactoryBuilder().build(is); //3創(chuàng)建sqlSession sqlSession=factory.openSession(); //4調(diào)用mapper文件來對數(shù)據(jù)進行操作,必須先把mapper文件引入到mybatis-config.xml中
user=sqlSession.selectOne("cn.dsscm.dao.user.UserMapper.getUserListById",1); logger.debug("UserTestuser>"+user); }catch(IOExceptione){ e.printStackTrace(); }finally{ sqlSession.close(); }}2.根據(jù)用戶名模糊查詢用戶信息查詢用戶
58編輯映射文件UserMapper.xml:在映射文件UserMapper.xml中,添加根據(jù)用戶名模糊查詢信息列表的SQL語句STEP011. <!--根據(jù)用戶名模糊查詢用戶信息列表-->2. <selectid="getUserListByName"parameterType="String"3. resultType="cn.dsscm.pojo.User">4. SELECT*FROMtb_user5. WHEREuserNameLIKE'%${value}%'6. </select>1. <!--根據(jù)用戶名模糊查詢用戶信息列表-->2. <selectid="getUserListByName"parameterType="String"3. resultType="cn.dsscm.pojo.User">4. SELECT*FROMtb_user5. WHEREuserNameLIKEconcat('%',#{value},'%')6. </select>2.根據(jù)用戶名模糊查詢用戶信息查詢用戶
59編輯測試方法:在測試類UserMapperTest.java中,添加一個測試方法findUserByNameTest()STEP02@TestpublicvoidfindUserByIdTest(){ …… //4調(diào)用mapper文件來對數(shù)據(jù)進行操作,必須先把mapper文件引入到mybatis-config.xml中
list=sqlSession.selectList("cn.dsscm.dao.user.UserMapper.getUserListByName","張"); logger.debug("UserTestlist>"+list); ……}一個項目多個配置文件
如果一個項目有多個映射文件,則mybatis-config.xml核心配置文件中需要在<mappers>元素下配置多個<mapper>元素指定映射文件的路徑。MyBatis的基礎(chǔ)操作60讀取配置文件通過SqlSessionFactory創(chuàng)建SqlSession根據(jù)配置文件構(gòu)建SqlSessionFactory12
3使用SqlSession對象操作數(shù)據(jù)庫4關(guān)閉SqlSession5MyBatis的操作步驟案例總結(jié)查詢用戶61技能訓練62實現(xiàn)供應(yīng)商表的查詢需求說明分別實現(xiàn)按下列條件查詢訂單表,查詢條件如下:全部供應(yīng)商。供應(yīng)商(供應(yīng)商id)。查詢結(jié)果列顯示:供應(yīng)商信息。練習完成時間:20分鐘共性問題集中講解63常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解添加用戶64編輯映射文件UserMapper.xml:添加操作是通過<insert>元素來實現(xiàn)的。例如,向數(shù)據(jù)庫中的dsscm_user表中插入一條數(shù)據(jù)可以通過如下配置來實現(xiàn)。STEP01<!--增加用戶--><insertid="add"parameterType="cn.dsscm.pojo.User"> insertintodsscm_user(userCode,userName,userPassword,gender, birthday,phone,address,userRole,createdBy,creationDate) values(#{userCode},#{userName},#{userPassword},#{gender},#{birthday}, #{phone},#{address},#{userRole},#{createdBy},#{creationDate})</insert>添加用戶65編輯測試方法:在測試類MybatisTest中,添加測試方法addUserTest()。STEP02 @Test publicvoidfindUserByIdTest(){ …… //4、SqlSession執(zhí)行添加操作
//4.1創(chuàng)建User對象,并向?qū)ο笾刑砑訑?shù)據(jù)
Useruser=newUser(); user.setUserCode("test001"); user.setUserName("測試用戶001"); user.setUserPassword("1234567"); …… //4.2執(zhí)行SqlSession的插入方法,返回的是SQL語句影響的行數(shù)
count=sqlSession.insert("cn.dsscm.dao.user.UserMapper.add",user); //4.3通過返回結(jié)果判斷插入操作是否執(zhí)行成功
if(count>0){ System.out.println("您成功插入了"+count+"條數(shù)據(jù)!"); }else{ System.out.println("執(zhí)行插入操作失敗?。。?); } //4.4提交事務(wù)
sqlSmit(); …… }更新用戶66編輯映射文件UserMapper.xml:在映射文件UserMapper.xml中,更新操作在映射文件中是通過配置<update>元素來實現(xiàn)的。STEP01<!--修改用戶信息--><updateid="modify"parameterType="cn.dsscm.pojo.User"> UPDATEdsscm_user SETuserCode=#{userCode},userName=#{userName}, userPassword=#{userPassword},gender=#{gender},birthday=#{birthday}, phone=#{phone},address=#{address},userRole=#{userRole}, modifyBy=#{modifyBy},modifyDate=#{modifyDate} WHEREid=#{id}</update>更新用戶67編輯測試方法:在測試類MybatisTest中,添加測試方法updateUserTest(),將id為21的信息修改。STEP02//4、SqlSession執(zhí)行添加操作
//4.1創(chuàng)建User對象,并向?qū)ο笾刑砑訑?shù)據(jù)
Useruser=newUser(); user.setId(21); user.setUserCode("test002"); ……. //4.2執(zhí)行SqlSession的更新方法,返回的是SQL語句影響的行數(shù)
count=sqlSession.update("cn.dsscm.dao.user.UserMapper.modify",user); //4.3通過返回結(jié)果判斷插入操作是否執(zhí)行成功
if(count>0){ System.out.println("您成功修改了"+count+"條數(shù)據(jù)!"); }else{ System.out.println("執(zhí)行修改操作失敗?。?!"); } //4.4提交事務(wù)
sqlSmit();…….刪除用戶68編輯映射文件UserMapper.xml:刪除操作在映射文件中是通過配置<delete>元素來實現(xiàn)的。STEP01
<!--根據(jù)userId刪除用戶信息--> <deleteid="deleteUserById"parameterType="Integer"> DELETEfromdsscm_user WHEREid=#{id} </delete>刪除用戶69編輯測試方法:在測試類MyBatisTest中,添加測試方法deleteUserTest(),該方法用于將id為21的用戶信息刪除。STEP02 @Test publicvoidfindUserByIdTest(){ …… //4、SqlSession執(zhí)行添加操作
//4.1執(zhí)行SqlSession的更新方法,返回的是SQL語句影響的行數(shù)
count=sqlSession.delete("cn.dsscm.dao.user.UserMapper.deleteUserById",21); //4.2通過返回結(jié)果判斷插入操作是否執(zhí)行成功
if(count>0){ System.out.println("您成功刪除了"+count+"條數(shù)據(jù)!"); }else{ System.out.println("執(zhí)行刪除操作失?。。?!"); } //4.3提交事務(wù)
sqlSmit(); …… }技能訓練70實現(xiàn)供應(yīng)商表的查詢需求說明在上一個練習的基礎(chǔ)上,實現(xiàn)供應(yīng)商表的增加操作。實現(xiàn)根據(jù)供應(yīng)商id修改供應(yīng)商信息的操作。實現(xiàn)根據(jù)供應(yīng)商id刪除供應(yīng)商信息的操作。增加和修改供應(yīng)商:使用insert元素和update元素。parameterType:Java實體類Provider。DAO層接口方法的返回類型:int。注意:createBy和creationDate,modifyDate和modifyBy這四個字段應(yīng)根據(jù)方法是增加或者修改,來進行靈活操作。刪除供應(yīng)商:使用delete元素。練習完成時間:20分鐘提示共性問題集中講解71常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解MyBatis
的工作原理05第1章初識MyBatisMyBatis工作原理圖MyBatis工作原理73MyBatis工作原理步驟
MyBatis框架在操作數(shù)據(jù)庫時,大體經(jīng)過了8個步驟。下面結(jié)合MyBatis工作原理圖對每一步流程進行詳細講解,具體如下。(1)MyBatis讀取核心配置文件mybatis-config.xml:mybatis-config.xml核心配置文件主要配置了MyBatis的運行環(huán)境等信息。(2)加載映射文件Mapper.xm:Mapper.xml文件即SQL映射文件,該文件配置了操作數(shù)據(jù)庫的SQL語句,需要在mybatis-config.xml中加載才能執(zhí)行。(3)構(gòu)造會話工廠:通過MyBatis的環(huán)境等配置信息構(gòu)建會話工廠SqlSessionFactory,用于創(chuàng)建SqlSession。MyBatis工作原理74MyBatis工作原理步驟(3)構(gòu)造會話工廠:通過MyBatis的環(huán)境等配置信息構(gòu)建會話工廠SqlSessionFactory,用于創(chuàng)建SqlSession。(4)創(chuàng)建SqlSession對象:由會話工廠SqlSessionFactory創(chuàng)建SqlSession對象,該對象中包含了執(zhí)行SQL語句的所有方法。(5)動態(tài)生成SQL語句:MyBatis底層定義了一個Executor接口用于操作數(shù)據(jù)庫,它會根據(jù)SqlSession傳遞的參數(shù)動態(tài)的生成需要執(zhí)行的SQL語句,同時負責查詢緩存地維護。MyBatis工作原理75MyBatis工作原理步驟(6)MappedStatement對象將傳入的Java對象映射到SQL語句中:SqlSession內(nèi)部通過執(zhí)行器Executor操作數(shù)據(jù)庫,增刪改語句通過Executor接口的update()方法執(zhí)行,查詢語句通過query()方法執(zhí)行。這兩個執(zhí)行方法中包含一個MappedStatement類型的參數(shù),該參數(shù)是對映射信息的封裝,存儲了要映射的SQL語句的id、參數(shù)等。Mapper.xml文件中一個SQL語句對應(yīng)一個MappedStatement對象,SQL語句的id即是MappedStatement的id。MyBatis工作原理76MyBatis工作原理步驟(7)輸入?yún)?shù)映射:在執(zhí)行Executor類的update()方法和query()方法時,MappedStatement對象會對用戶執(zhí)行SQL語句時輸入的參數(shù)進行定義,Executor執(zhí)行器會在執(zhí)行SQL語句之前,通過MappedStatement對象將輸入的參數(shù)映射到SQL語句中。Executor執(zhí)行器對輸入?yún)?shù)的映射過程類似于JDBC編程對PreparedStatement對象設(shè)置參數(shù)的過程。(8)輸出結(jié)果映射:excutor()方法在數(shù)據(jù)庫中執(zhí)行完SQL語句后,MappedStatement對象會對輸出的結(jié)果進行定義,Executor執(zhí)行器會在執(zhí)行SQL語句之后,通過MappedStatement對象將輸出結(jié)果映射至Java對象中。Executor執(zhí)行器將輸出結(jié)果映射到Java對象的過程類似于JDBC編程對結(jié)果的解析處理過程。MyBatis工作原理77本章小結(jié)
本章主要針對MyBatis框架進行了講解。首先對框架的概念、優(yōu)點和當前一些主流的JavaEE框架進行了講解,然后對傳統(tǒng)JDBC的劣勢進行了分析,由此引出了MyBatis框架,并對MyBatis框架的環(huán)境搭建、入門程序以及工作原理進行了詳細地講解。通過本章的學習,讀者可以了解MyBatis框架及其作用,熟悉MyBatis的工作原理,并能夠獨立完成MyBatis框架環(huán)境的搭建以及入門程序的編寫。本章小結(jié)78優(yōu)秀持久層框架:實體類和SQL語句之間建立映射關(guān)系搭建MyBatis開發(fā)環(huán)境MyBatis入門程序查詢用戶添加用戶修改用戶刪除用戶初識MyBatis1.下載mybatis.jar包并導入工程2.編寫MyBatis核心配置文件(mybatis-config.xml)3.創(chuàng)建實體類-POJO4.DAO層-SQL映射文件5.創(chuàng)建測試類根據(jù)據(jù)用戶編號查詢用戶信息根據(jù)用戶名模糊查詢用戶信息本章小結(jié)79本章作業(yè)?
本章作業(yè)請簡述MyBatis框架與Hibernate框架的區(qū)別。請簡述MyBatis的工作執(zhí)行流程。?預(yù)習作業(yè)MyBatis配置文件中的各個元素有什么作用?MyBatis映射文件中有哪些常用元素?80問題及作業(yè)集中問題&課后作業(yè)MyBatis的核心接口和類MyBatis的核心配置文件MyBatis的映射文件使用接口實現(xiàn)條件查詢使用接口實現(xiàn)添加、更新、刪除第2章
MyBatis的核心配置2024/1/29學習目標/Target83了解MyBatis的核心接口和類的作用熟悉MyBatis的配置文件中各個元素的作用掌握MyBatis的映射文件中常用元素的使用方法掌握使用<select>元素實現(xiàn)條件查詢的方法掌握使用接口實現(xiàn)添加、更新、刪除的方法章節(jié)概述/Summary84通過上一章的學習,讀者對MyBatis框架已經(jīng)有了一個初步了解,但是要想熟練地使用MyBatis框架進行實際開發(fā),只會簡單的配置是不行的,我們還需要對框架中的核心對象、核心配置文件以及映射文件有更深入的了解。本章將針對MyBatis核心對象、核心配置文件和映射文件進行講解。目錄/CONTENTSMyBatis的核心接口和類使用接口實現(xiàn)條件查詢MyBatis的映射文件MyBatis的核心配置文件使用接口實現(xiàn)添加、更新、刪除14325MyBatis的
核心接口和類01第2章MyBatis的核心配置MyBatis基本要素MyBatis的核心對象SqlSessionFactoryBuilderSqlSessionFactorySqlSessionmybatis-config.xml系統(tǒng)核心配置文件mapper.xmlSQL映射文件87核心接口和類的結(jié)構(gòu)SqlSessionFactoryBuilderSqlSessionFactorybuild()openSession()SqlSession88SqlSessionFactoryBuilder什么是SqlSessionFactoryBuilder?用過即丟,其生命周期只存在于方法體內(nèi)可重用其來創(chuàng)建多個SqlSessionFactory實例負責構(gòu)建SqlSessionFactory,并提供多個build方法的重載89SqlSessionFactoryBuilder的多個重載build()方法
SqlSessionFactoryBuilder90build(InputStreaminputStream,Stringenvironment,Propertiesproperties)build(Readerreader,Stringenvironment,Propertiesproperties)build(Configurationconfig)SqlSessionFactoryBuilder構(gòu)建build()方法的形式由于build()方法中的參數(shù)environment和properties都可以為null,所以SqlSessionFactoryBuilder構(gòu)建SqlSessionFactory對象的build()方法按照配置信息的傳入方式,可以分為三種形式。SqlSessionFactoryBuilder91配置信息以三種形式提供給SqlSessionFactory的build方法:InputStream(字節(jié)流)、Reader(字符流)、Configuration(類)!形式一:SqlSessionFactoryBuilder構(gòu)建build()方法
上述build()方法中,參數(shù)inputStream是字節(jié)流,它封裝了XML文件形式的配置信息;參數(shù)environment和參數(shù)properties為可選參數(shù)。其中,參數(shù)environment決定將要加載的環(huán)境,包括數(shù)據(jù)源和事務(wù)管理器;參數(shù)properties決定將要加載的properties文件。
build(InputStreaminputStream,Stringenvironment,Propertiesproperties)SqlSessionFactoryBuilder92讀取XML文件構(gòu)造方式:Stringresource="mybatis-config.xml";InputStreamis=Resources.getResourceAsStream(resource);SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(is);形式二:SqlSessionFactoryBuilder構(gòu)建build()方法
由上述build()方法可知,第二種形式的build()方法參數(shù)作用與第一種形式大體一致,唯一不同的是,第一種形式的build()方法使用InputStream字節(jié)流封裝了XML文件形式的配置信息,而第二種形式的build()方法使用Reader字符流封裝了xml文件形式的配置信息。
build(Readerreader,Stringenvironment,Propertiesproperties)SqlSessionFactoryBuilder93形式三:SqlSessionFactoryBuilder構(gòu)建build()方法
通過以上代碼可知,配置信息可以通過InputStream(字節(jié)流)、Reader(字符流)、Configuration(類)三種形式提供給SqlSessionFactoryBuilder的build()方法。
build(Configurationconfig)SqlSessionFactoryBuilder94以讀取XML文件的方式構(gòu)造SqlSessionFactory對象
通過過讀取XML配置文件的方式構(gòu)造SqlSessionFactory對象的關(guān)鍵代碼如下所示。
//讀取配置文件InputStreaminputStream=Resources.getResourceAsStream("配置文件位置");//根據(jù)配置文件構(gòu)建SqlSessionFactorySqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream);SqlSessionFactoryBuilder95使用什么模式創(chuàng)建SqlSessionFactory對象
SqlSessionFactory對象是線程安全的,它一旦被創(chuàng)建,在整個應(yīng)用程序執(zhí)行期間都會存在。如果我們多次創(chuàng)建同一個數(shù)據(jù)庫的SqlSessionFactory對象,那么該數(shù)據(jù)庫的資源將很容易被耗盡。通常每一個數(shù)據(jù)庫都只創(chuàng)建一個SqlSessionFactory對象,所以在構(gòu)建SqlSessionFactory對象時,建議使用單例模式。SqlSessionFactoryBuilder96SqlSessionFactory97什么是SqlSessionFactory?SqlSessionFactory是MyBatis框架中十分重要的對象,它是單個數(shù)據(jù)庫映射關(guān)系經(jīng)過編譯后的內(nèi)存鏡像,其主要作用是創(chuàng)建SqlSession。SqlSessionFactory對象的實例可以通過SqlSessionFactoryBuilder對象來構(gòu)建,而SqlSessionFactoryBuilder則可以通過XML配置文件或一個預(yù)先定義好的Configuration實例構(gòu)建出SqlSessionFactory的實例。SqlSessionFactory98SqlSessionFactory對象是線程安全的,它一旦被創(chuàng)建,在整個應(yīng)用執(zhí)行期間都會存在。如果我們多次的創(chuàng)建同一個數(shù)據(jù)庫的SqlSessionFactory,那么此數(shù)據(jù)庫的資源將很容易被耗盡。為此,通常每一個數(shù)據(jù)庫都會只對應(yīng)一個SqlSessionFactory,所以在構(gòu)建SqlSessionFactory實例時,建議使用單列模式。InputStreaminputStream=Resources.getResourceAsStream("配置文件位置");SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream);通過XML配置文件構(gòu)建出的SqlSessionFactory實例現(xiàn)代碼如下:構(gòu)建SqlSessionFactorySqlSessionFactory的openSession()方法SqlSessionFactory99方法名稱描述SqlSessionopenSession()開啟一個事務(wù)。SqlSessionopenSession(BooleanautoCommit)參數(shù)autoCommit可設(shè)置是否開啟事務(wù)。SqlSessionopenSession(Connectionconnection)參數(shù)connection可提供自定義連接。SqlSessionopenSession(TransactionIsolationLevellevel)參數(shù)level可設(shè)置隔離級別。SqlSessionopenSession(ExecutorTypeexecType)參數(shù)execType有三個可選值。SqlSessionopenSession(ExecutorTypeexecType,BooleanautoCommit)參數(shù)execType有三個可選值。SqlSessionopenSession(ExecutorTypeexecType,Connectionconnection)參數(shù)ExecutorType有三個可選值。openSession(ExecutorTypeexecType)參數(shù)值
參數(shù)execType有三個可選值:ExecutorType.SIMPLE:表示為每條語句創(chuàng)建一條新的預(yù)處理語句。ExecutorType.REUSE:表示會復用預(yù)處理語句。ExecutorType.BATCH:表示會批量執(zhí)行所有更新語句。SqlSessionFactory100openSession(ExecutorTypeexecType,BooleanautoCommit)參數(shù)值
參數(shù)execType有三個可選值:ExecutorType.SIMPLE:表示為每條語句創(chuàng)建一條新的預(yù)處理語句。ExecutorType.REUSE:表示會復用預(yù)處理語句。ExecutorType.BATCH:表示會批量執(zhí)行所有更新語句。
參數(shù)autoCommit可設(shè)置是否開啟事務(wù)。
SqlSessionFactory101openSession(ExecutorTypeexecType,Connectionconnection)參數(shù)值
參數(shù)ExecutorType有三個可選值:ExecutorType.SIMPLE:表示為每條語句創(chuàng)建一條新的預(yù)處理語句。
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度年福建省高校教師資格證之高等教育法規(guī)全真模擬考試試卷B卷含答案
- 2023年貴金屬:鉑資金申請報告
- 河北省保定市歷史初二上學期期末試題及答案指導(2024-2025學年)
- 2024年度水庫工程承建商協(xié)議模板
- 2024外匯資金借款協(xié)議參考樣式
- 2024年裝修住宅維護服務(wù)協(xié)議
- 2024年出口商品協(xié)議格式
- 二手房買賣2024中介服務(wù)協(xié)議樣本
- 2024年度污水站運維專業(yè)服務(wù)協(xié)議
- 2024年度企業(yè)專屬物流配送服務(wù)協(xié)議
- 期中測試卷-2024-2025學年統(tǒng)編版語文二年級上冊
- 2024年新高考Ⅰ卷、Ⅱ卷、甲卷詩歌鑒賞試題講評課件
- 10以內(nèi)口算題每頁50道
- 健康科普宣教課件
- 砼質(zhì)量缺陷修補方案
- 美國的人才機制
- 電壓和電阻復習課件
- 《巴蜀文化簡論》PPT課件.ppt
- 電動自行車火災(zāi)的勘查檢驗技術(shù)及案例分析
- 螺栓檢測報告
- 腐蝕測量及技術(shù)
評論
0/150
提交評論