中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

汨羅網(wǎng)站建設(shè)制作網(wǎng)站平臺

汨羅網(wǎng)站建設(shè),制作網(wǎng)站平臺,如何做網(wǎng)站小編,數(shù)字中國建設(shè)峰會 官方網(wǎng)站簡介 MyBatis是一款優(yōu)秀的持久層框架,它支持普通SQL查詢,存儲過程和高級映射。MyBatis通過簡單的XML或注解用于配置和原始映射,將接口和Java的POJOs(Plain Ordinary Java Object,普通的Java對象)映射成數(shù)據(jù)…

簡介

MyBatis是一款優(yōu)秀的持久層框架,它支持普通SQL查詢,存儲過程和高級映射。MyBatis通過簡單的XML或注解用于配置和原始映射,將接口和Java的POJOs(Plain Ordinary Java Object,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。MyBatis可以自動注冊驅(qū)動、建立連接、獲取SQL執(zhí)行對象、釋放連接等操作,開發(fā)人員只需要關(guān)注SQL語句的編寫即可,無需過多關(guān)注數(shù)據(jù)庫連接問題。

MyBatis的優(yōu)勢在于它通過參數(shù)映射方式,將參數(shù)靈活地配置在SQL語句中的配置文件中,避免了在Java類中配置參數(shù)。此外,MyBatis通過輸出映射機制,將結(jié)果集的檢索自動映射成相應(yīng)的Java對象,避免了手工檢索結(jié)果集。MyBatis還支持動態(tài)SQL,可以通過條件判斷進行查詢實現(xiàn)SQL復(fù)用。

主要特點

MyBatis的主要特點包括:

  1. 簡單易用:MyBatis的API非常簡單,易于學(xué)習和上手。
  2. 靈活性強:MyBatis允許開發(fā)人員自定義SQL語句,滿足各種復(fù)雜的查詢和數(shù)據(jù)操作需求。
  3. 映射關(guān)系自由:MyBatis不強制要求實體類和數(shù)據(jù)庫表之間的映射關(guān)系,開發(fā)人員可以靈活選擇使用注解或XML配置文件來管理映射關(guān)系。
  4. 與Spring等框架整合方便:MyBatis提供了與Spring、Spring Boot等框架整合的支持,可以輕松地將MyBatis與這些框架無縫集成。
  5. 易于擴展:MyBatis插件機制可以讓開發(fā)者增加自定義的功能,擴展性非常強。
  6. 輕量級:MyBatis自身不依賴其他任何JAR,但需要提供JDBC實現(xiàn)。
  7. 學(xué)習成本低:相比ORM框架而言,掌握MyBatis的使用是很輕松的。
  8. SQL代碼從程序代碼中徹底分離出來,可重用:提供XML標簽,支持編寫動態(tài)SQL,提供映射標簽,支持對象與數(shù)據(jù)庫的ORM字段關(guān)系映射。

然而,MyBatis也有一些缺點,如SQL語句編寫工作量大,熟練度要高;數(shù)據(jù)庫移植性差,比如從MySQL移植到Oracle,SQL語句會有差異從而引起錯誤。

應(yīng)用場景

MyBatis主要適用于以下應(yīng)用場景:

  1. 對性能要求高的場景:例如互聯(lián)網(wǎng)項目,MyBatis可以提供靈活的SQL映射和優(yōu)化,滿足高性能的需求。
  2. 需求變化較多的項目:MyBatis允許開發(fā)人員自定義SQL語句,可以根據(jù)需求靈活修改和優(yōu)化SQL語句,適用于需求變化較多的項目。
  3. 數(shù)據(jù)庫操作復(fù)雜的場景:MyBatis支持自定義SQL、存儲過程以及高級映射,可以處理復(fù)雜的數(shù)據(jù)庫操作和數(shù)據(jù)映射。
  4. 需要減少JDBC代碼量的場景:MyBatis可以自動注冊驅(qū)動、建立連接、獲取SQL執(zhí)行對象、釋放連接等操作,減少了大量的JDBC代碼,簡化了數(shù)據(jù)庫操作。

總的來說,MyBatis適用于各種基于Java的持久層應(yīng)用,特別是需要高效、靈活地進行數(shù)據(jù)庫操作的應(yīng)用場景。

Mybatis的原理

MyBatis的工作原理主要包括以下幾個步驟:

  1. 讀取MyBatis配置文件:MyBatis的配置文件為mybatis-config.xml,其中包含了MyBatis的全局配置信息,如數(shù)據(jù)庫連接信息等。
  2. 加載映射文件:mybatis-config.xml配置文件中可以加載多個映射文件,每個映射文件對應(yīng)數(shù)據(jù)庫中的一張表。
  3. 構(gòu)造會話工廠:通過MyBatis的環(huán)境等配置信息,可以構(gòu)建一個會話工廠SqlSessionFactory。
  4. 創(chuàng)建會話對象:由會話工廠創(chuàng)建SqlSession對象,該對象中包含了執(zhí)行SQL語句的所有方法。
  5. Executor執(zhí)行器:MyBatis底層定義了一個Executor接口來操作數(shù)據(jù)庫,它將根據(jù)SqlSession傳遞的參數(shù)動態(tài)地生成需要執(zhí)行的SQL語句,同時負責查詢緩存的維護。

在輸入?yún)?shù)映射過程中,MyBatis將參數(shù)映射到SQL語句中,類似于JDBC對preparedStatement對象設(shè)置參數(shù)的過程。在輸出結(jié)果映射過程中,MyBatis將查詢結(jié)果映射到Java對象,類似于JDBC對結(jié)果集的解析過程。

SpringBoot集成Mybatis

將MyBatis與Spring Boot集成是一種常見的做法,它可以讓你的應(yīng)用程序更加易于管理、可維護性和高效。以下是集成MyBatis與Spring Boot的步驟:

  1. 添加依賴:在Spring Boot項目的pom.xml文件中,添加MyBatis和MyBatis-Spring的依賴。
<dependencies><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version></dependency>
</dependencies>
  1. 配置數(shù)據(jù)源:在Spring Boot的application.properties或application.yml文件中,配置數(shù)據(jù)庫連接信息。
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=rootpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  1. 創(chuàng)建實體類:根據(jù)數(shù)據(jù)庫表結(jié)構(gòu),創(chuàng)建對應(yīng)的Java實體類。
  2. 創(chuàng)建Mapper接口:為每個實體類創(chuàng)建一個Mapper接口,并使用@Mapper注解進行標注。
  3. 創(chuàng)建Mapper XML文件:在resources/mapper目錄下,為每個Mapper接口創(chuàng)建一個對應(yīng)的XML文件,并在其中編寫對應(yīng)的SQL語句。
  4. 創(chuàng)建Service類:創(chuàng)建一個Service類,注入Mapper接口,并實現(xiàn)業(yè)務(wù)邏輯。
  5. 創(chuàng)建Controller類:創(chuàng)建一個Controller類,處理前端請求,調(diào)用Service類的方法,并返回結(jié)果。
  6. 配置MyBatis掃描路徑:在application配置類上添加@MapperScan注解,指定MyBatis的掃描路徑。
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

通過以上步驟,你就可以將MyBatis與Spring Boot成功集成。在實際開發(fā)中,你可以根據(jù)需要進一步優(yōu)化和擴展集成方案,例如使用注解配置SQL語句、使用MyBatis Plus簡化開發(fā)等。

Mybatis的架構(gòu)設(shè)計

MyBatis的架構(gòu)設(shè)計主要包括以下幾個層次:

  1. 接口層:這是MyBatis與數(shù)據(jù)庫交互的方式??梢允褂脗鹘y(tǒng)的MyBatis提供的API,通過創(chuàng)建SqlSession對象實現(xiàn)。此外,還可以使用Mapper接口,其中聲明的方法和跟節(jié)點中的<select|update|delete|insert>節(jié)點項對應(yīng)。
  2. 核心處理層:這一層主要負責處理MyBatis的核心邏輯,包括配置解析、參數(shù)映射、SQL解析、SQL執(zhí)行、結(jié)果集映射、插件等。
  3. 基礎(chǔ)支持層:這一層為MyBatis提供了基礎(chǔ)支持,包括數(shù)據(jù)源模塊、事務(wù)管理模塊、緩存模塊、Binding模塊、反射模塊、類型轉(zhuǎn)換、日志模塊、資源加載和解析器模塊等。

此外,MyBatis的插件機制允許開發(fā)者通過繼承Interceptor接口自定義攔截器,對SQL語句執(zhí)行過程中的某一點進行攔截。MyBatis還采用了責任鏈模式,使得插件的開發(fā)和使用更加靈活。

MyBatis的架構(gòu)設(shè)計使其易于使用和擴展,同時還能提供高效的數(shù)據(jù)庫操作。

Mybatis的核心處理層

MyBatis的核心處理層是負責處理接口層傳進來的指令,并將這些指令轉(zhuǎn)換成SQL語句,然后執(zhí)行相關(guān)SQL,并對結(jié)果集進行封裝映射。這一層的主要任務(wù)包括SQL執(zhí)行與結(jié)果集映射,由Executor負責維護緩存和事務(wù)管理,并將數(shù)據(jù)庫操作委托給StatementHandler。

核心處理層的兩個關(guān)鍵類是Configuration和Executor。Configuration持有了Mybatis運行期間所有的數(shù)據(jù),包括SQL模板,結(jié)果集映射數(shù)據(jù)等。Executor負責維護緩存和事務(wù)管理,并將數(shù)據(jù)庫操作委托給StatementHandler。

核心處理層的StatementHandler接口是MyBatis的核心接口之一,它完成了MyBatis中最核心的工作,也就是如何去與使用原生JDBC數(shù)據(jù)庫進行交互。StatementHandler的功能包括創(chuàng)建對應(yīng)的Statement對象,為SQL綁定實參,執(zhí)行各種SQL語句,批量執(zhí)行SQL語句,將結(jié)果集映射到結(jié)果對象等。

核心處理層還包括一些其他組件,如ParameterHandler負責完成SQL語句的實參綁定,ResultSetHandler負責處理結(jié)果集的映射等。這些組件協(xié)同工作,共同完成了MyBatis的核心處理任務(wù)。

MyBatis的核心處理層包括以下幾個關(guān)鍵類:

  1. SqlSessionFactoryBuilder:每個MyBatis應(yīng)用程序的入口。通過XML配置文件創(chuàng)建Configuration對象,然后通過build方法創(chuàng)建SqlSessionFactory對象。
  2. SqlSessionFactory:用于創(chuàng)建SqlSession的工廠。SqlSession是MyBatis工作的主要頂層API,表示和數(shù)據(jù)庫交互的會話,完成必要數(shù)據(jù)庫增刪改查功能。
  3. SqlSession:執(zhí)行增刪改查操作,管理事務(wù)。
  4. Executor:MyBatis執(zhí)行器,是MyBatis調(diào)度的核心,負責SQL語句的生成和查詢緩存的維護。
  5. StatementHandler:封裝了JDBC Statement操作,負責對JDBC Statement的操作,如設(shè)置參數(shù)、將Statement結(jié)果集轉(zhuǎn)換成List集合。
  6. ResultSetHandler:處理查詢結(jié)果。

Mybatis的常用插件

MyBatis提供了多種常用的插件,以擴展其功能和性能。以下是一些常用的MyBatis插件:

  1. 全局通用操作插件:支持全局通用方法注入,如Write once, use anywhere,方便開發(fā)者在多個地方復(fù)用相同的代碼。
  2. 分頁插件:基于Mybatis物理分頁,開發(fā)者無需關(guān)心具體操作,配置好插件之后,寫分頁等同于寫基本List查詢。
  3. 性能分析插件:可輸出Sql語句以及其執(zhí)行時間,建議開發(fā)測試時啟用該功能,能有效解決慢查詢問題。
  4. 全局攔截插件:提供全表 delete 、 update 操作智能分析阻斷,預(yù)防誤操作。
  5. 代碼生成插件:mybatis-generator可以針對數(shù)據(jù)庫表自動生成MyBatis執(zhí)行所需要的代碼(如Mapper.java、Mapper.xml、POJO)。

這些插件可以幫助開發(fā)者提高開發(fā)效率、優(yōu)化數(shù)據(jù)庫查詢性能、增強代碼安全性等。在實際開發(fā)中,可以根據(jù)需要選擇合適的插件,以提升MyBatis的應(yīng)用效果。

Mybatis插件原理

MyBatis的插件原理是基于JDK的動態(tài)代理和責任鏈模式實現(xiàn)的。

MyBatis允許使用插件來攔截四個核心對象:Executor、StatementHandler、ParameterHandler和ResultSetHandler。這四個對象在MyBatis的底層源碼中被創(chuàng)建時,都會調(diào)用interceptor.plugin方法,這就是插件的切入點。

MyBatis的插件機制采用了JDK的動態(tài)代理,當這些對象被創(chuàng)建時,MyBatis會為他們生成代理對象。這些代理對象會增強原始對象的方法,實現(xiàn)在方法執(zhí)行前后進行攔截的功能。這種機制類似于AOP(切面編程),可以在不修改原始代碼的情況下,對方法的執(zhí)行進行增強。

當代理對象的方法被調(diào)用時,會先執(zhí)行插件的攔截邏輯,然后再執(zhí)行原始對象的方法。插件的攔截邏輯可以根據(jù)需要進行定制,比如添加日志、性能監(jiān)控、事務(wù)管理等。

總的來說,MyBatis的插件機制提供了一種靈活的方式來擴展和定制MyBatis的功能,使得開發(fā)者可以更加方便地使用MyBatis進行數(shù)據(jù)庫操作。

http://m.risenshineclean.com/news/58425.html

相關(guān)文章:

  • 如何外貿(mào)seo網(wǎng)站建設(shè)外鏈工具
  • 博物館網(wǎng)站建設(shè)方案報價關(guān)鍵詞優(yōu)化分析工具
  • 公司宣傳冊設(shè)計與制作模板seo免費課程
  • 在美國注冊一個網(wǎng)站 大陸做銷售網(wǎng)址推薦
  • 自己做網(wǎng)站現(xiàn)實么網(wǎng)站設(shè)計就業(yè)
  • 沒網(wǎng)站能不能cpc廣告點擊賺錢做關(guān)鍵詞優(yōu)化排名的步驟
  • 開發(fā)網(wǎng)頁系統(tǒng)一般多少錢windows優(yōu)化大師官網(wǎng)
  • 中學(xué)生旅游網(wǎng)站開發(fā)的論文怎么寫外鏈seo推廣
  • 都昌網(wǎng)站建設(shè)seo可以從哪些方面優(yōu)化
  • 企業(yè)網(wǎng)站推廣設(shè)計網(wǎng)站優(yōu)化推廣
  • 個人網(wǎng)站怎么做支付寶接口google推廣妙招
  • wordpress主題生成seo這個行業(yè)怎么樣
  • 做爰網(wǎng)站美女東莞今日頭條最新消息
  • 網(wǎng)站建設(shè)怎么樣真正免費建站
  • 網(wǎng)站做推廣需要多少錢seo博客優(yōu)化
  • 網(wǎng)站建設(shè)畢業(yè)設(shè)計中期檢查自己怎么創(chuàng)建一個網(wǎng)站
  • 重慶網(wǎng)站建設(shè)公司模板地推掃碼平臺
  • 找電商平臺幫我賣產(chǎn)品網(wǎng)站優(yōu)化排名工具
  • 鷹潭市城鄉(xiāng)建設(shè)局網(wǎng)站seo實戰(zhàn)密碼第四版
  • ASP動態(tài)商業(yè)網(wǎng)站建設(shè)案例山西seo優(yōu)化公司
  • 用織夢做的網(wǎng)站一般后臺個人主頁網(wǎng)頁設(shè)計
  • 網(wǎng)站如何做友情鏈接edm營銷
  • 公司網(wǎng)站鏈接開封網(wǎng)站優(yōu)化公司
  • 筋鄭州做網(wǎng)站百度云搜索引擎入口網(wǎng)盤搜索神器
  • 代碼生成器app下載天津百度關(guān)鍵詞seo
  • 公司oa辦公平臺寧波seo優(yōu)化服務(wù)
  • 做產(chǎn)品表情的網(wǎng)站手機上怎么制作網(wǎng)頁
  • 上海美術(shù)設(shè)計公司廣州百度提升優(yōu)化
  • 智能手機網(wǎng)站模板四平網(wǎng)絡(luò)推廣
  • WordPress旋轉(zhuǎn)圖標seo模板建站