深入理解JAVA中MyBatis框架(1)

      網友投稿 962 2025-04-03

      本文為Mybatis的基礎講解,歡迎閱讀學習,一起進步。


      文章目錄

      一.Mybatis簡介

      二.框架特點

      三.總體流程

      四.功能架構

      五.體系結構

      六.MyBatis和數據交互的方式

      七.MyBatis配置文件

      一.MyBatis簡介

      MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,并且改名為MyBatis 。2013年11月遷移到Github。

      iBATIS一詞來源于“internet”和“abatis”的組合,是一個基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(sDAO)

      MyBatis 是一款優秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。

      二.框架特點

      ①簡單易學:本身就很小且簡單。沒有任何第三方依賴,最簡單安裝只要兩個jar文件+配置幾個sql映射文件易于學習,易于使用,通過文檔和源代碼,可以比較完全的掌握它的設計思路和實現。

      ②靈活:mybatis不會對應用程序或者數據庫的現有設計強加任何影響。sql寫在xml里,便于統一管理和優化。通過sql基本上可以實現我們不使用數據訪問框架可以實現的所有功能,或許更多。

      ③解除sql與程序代碼的耦合:通過提供DAL層,將業務邏輯和數據訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。sql和代碼的分離,提高了可維護性。

      ④提供映射標簽,支持對象與數據庫的orm字段關系映射

      ⑤提供對象關系映射標簽,支持對象關系組建維護

      ⑥提供xml標簽,支持編寫動態sql

      三.總體流程

      ①加載配置并初始化

      觸發條件:加載配置文件

      處理過程:將SQL的配置信息加載成為一個個MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。

      ②接收調用請求

      觸發條件:調用Mybatis提供的API

      傳入參數:為SQL的ID和傳入參數對象

      處理過程:將請求傳遞給下層的請求處理層進行處理。

      ③處理操作請求

      觸發條件:API接口層傳遞請求過來

      傳入參數:為SQL的ID和傳入參數對象

      處理過程:

      (A)根據SQL的ID查找對應的MappedStatement對象。

      (B)根據傳入參數對象解析MappedStatement對象,得到最終要執行的SQL和執行傳入參數。

      ?獲取數據庫連接,根據得到的最終SQL語句和執行傳入參數到數據庫執行,并得到執行結果。

      (D)根據MappedStatement對象中的結果映射配置對得到的執行結果進行轉換處理,并得到最終的處理結果。

      (E)釋放連接資源。

      ④返回處理結果將最終的處理結果返回

      四.功能架構

      Mybatis的功能架構分為三層:

      API接口層:提供給外部使用的接口API,開發人員通過這些本地API來操縱數據庫。接口層一接收到調用請求就會調用數據處理層來完成具體的數據處理。

      數據處理層:負責具體的SQL查找、SQL解析、SQL執行和執行結果映射處理等。它主要的目的是根據調用的請求完成一次數據庫操作。

      基礎支撐層:負責最基礎的功能支撐,包括連接管理、事務管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來作為最基礎的組件。為上層的數據處理層提供最基礎的支撐。

      五.體系結構

      mybatis配置文件,包括Mybatis全局配置文件和Mybatis映射文件,其中全局配置文件配置了數據源、事務等信息;映射文件配置了SQL執行相關的信息。

      ①mybatis通過讀取配置文件信息(全局配置文件和映射文件),構造出SqlSessionFactory,即會話工廠。

      ②通過SqlSessionFactory,可以創建SqlSession即會話。Mybatis是通過SqlSession來操作數據庫的。

      ③SqlSession本身不能直接操作數據庫,它是通過底層的Executor執行器接口來操作數據庫的。Executor接口有兩個實現類,一個是普通執行器,一個是緩存執行器(默認)。

      ④Executor執行器要處理的SQL信息是封裝到一個底層對象MappedStatement中。該對象包括:SQL語句、輸入參數映射信息、輸出結果集映射信息。其中輸入參數和輸出結果的映射類型包括java的簡單類型、HashMap集合對象、POJO對象類型。

      六.MyBatis和數據交互的方式

      MyBatis和數據庫交互方式主要分兩種:

      ①使用傳統的MyBatis提供的API;

      通過調用MyBatis中SqlSession對象的方法從而達到與數據庫交互的方式,有一些類似DBUtils的操作!

      上述使用MyBatis的方法,是創建一個和數據庫打交道的SqlSession對象,然后根據Statement Id和參數來操作數據庫,這種方式固然很簡單和實用,但是它不符合面向對象語言的概念和面向接口編程的編程習慣。由于面向接口的編程是面向對象的大趨勢,MyBatis為了適應這一趨勢,增加了第二種使用MyBatis 支持接口(Interface)調用方 式。

      ②使用Mapper接口;

      MyBatis將核心配置文件中的每一個節點抽象為一個 Mapper 接口,而這個接口中聲明的方法和跟節點中的節點項對應,即 節點的id值為Mapper接口中的方法名稱,parameterType值表示Mapper對應方法的入參類型,而resultMap值則對應了Mapper接口表示的返回值類型或者返回結果集的元素類型。

      深入理解JAVA中MyBatis框架(1)

      小結:MyBatis引用Mapper接口這種調用方式,純粹是為了滿足面向接口編程的需要。(其實還有一個原因是在于,面向接口的編程,使得用戶在接口上可以使用注解來配置SQL語句,這樣就可以脫離XML配置文件,實現“0配置”)

      七.MyBatis配置文件

      1.核心配置文件

      在classpath下,創建SqlMapConfig.xml文件,該文件為核心配置文件,可以配置當前環境信息,加載映射文件,加載properties文件,配置全局參數,定義別名等。

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      2.映射文件

      在指定的目錄下創建映射文件,配置要執行的statement,即增刪改查等語句。

      select last_insert_id() insert into user(username,sex,birthday,address) values(#{username},#{sex},#{birthday},#{address}) delete from user where id=#{id} update user set username=#{username},sex=#{sex},birthday=#{birthday},address=# {address} where id= #{id}

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      The best investment is in yourself.

      2020.03.21 記錄辰兮的第34篇博客

      Java MyBatis

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel升序排序怎么設置(Excel怎么升序排序)
      下一篇:怎樣在wps表格中使用自動填充功能(wps表格怎么設置自動填充)
      相關文章
      精品亚洲成AV人在线观看| 亚洲人成人77777网站| 亚洲乱亚洲乱妇无码麻豆| 在线看亚洲十八禁网站| 亚洲色大成网站www尤物| 亚洲AV无码一区二区三区人| 亚洲国产片在线观看| 亚洲国产成人久久| 亚洲国产中文在线二区三区免| 亚洲成人动漫在线观看| 亚洲国产成人无码av在线播放| 亚洲精品国产成人| 亚洲乱码一区av春药高潮| 亚洲免费二区三区| 国产色在线|亚洲| 亚洲最大无码中文字幕| 亚洲一线产区二线产区区| 亚洲日韩国产欧美一区二区三区 | 国产亚洲美日韩AV中文字幕无码成人 | 亚洲AV午夜成人片| 亚洲成a人片在线观看中文动漫| 国产精品国产亚洲精品看不卡| 亚洲高清专区日韩精品| 亚洲第一福利视频| 亚洲精品国产手机| 亚洲 日韩 色 图网站| 亚洲精品国产精品| 亚洲国产一成久久精品国产成人综合 | 亚洲伊人久久精品影院| 国产亚洲人成网站在线观看不卡| 国产亚洲av片在线观看播放 | 亚洲爆乳无码精品AAA片蜜桃| 激情小说亚洲色图| 久久精品国产精品亚洲人人 | 亚洲日韩国产精品乱-久| 亚洲精品成a人在线观看夫| 婷婷亚洲综合一区二区| 久久久精品国产亚洲成人满18免费网站 | 久久亚洲综合色一区二区三区| 亚洲精品视频在线| 亚洲一级毛片免观看|