一、MyBatis簡介

一、MyBatis

MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,并且改名為MyBatis 。2013年11月遷移到Github。
MyBatis是一個優(yōu)秀的持久層框架,它對jdbc的操作數(shù)據(jù)庫的過程進行封裝,使開發(fā)者只需要關注 SQL 本身,而不需要花費精力去處理例如注冊驅動、創(chuàng)建connection、創(chuàng)建statement、手動設置參數(shù)、結果集檢索等jdbc繁雜的過程代碼。
Mybatis通過xml或注解的方式將要執(zhí)行的各種statement(statement、preparedStatemnt、CallableStatement)配置起來,并通過java對象和statement中的sql進行映射生成最終執(zhí)行的sql語句,最后由mybatis框架執(zhí)行sql并將結果映射成java對象并返回。

二、使用jdbc編程問題總結

2.1 jdbc編程步驟

1、  加載數(shù)據(jù)庫驅動
2、  創(chuàng)建并獲取數(shù)據(jù)庫鏈接
3、  創(chuàng)建jdbc statement對象
4、  設置sql語句
5、  設置sql語句中的參數(shù)(使用preparedStatement)
6、  通過statement執(zhí)行sql并獲取結果
7、  對sql執(zhí)行結果進行解析處理
8、  釋放資源(resultSet、preparedstatement、connection)

2.2 jdbc問題總結如下:

1、  數(shù)據(jù)庫連接創(chuàng)建、釋放頻繁造成系統(tǒng)資源浪費,從而影響系統(tǒng)性能。如果使用數(shù)據(jù)庫連接池可解決此問題。
2、  Sql語句在代碼中硬編碼,造成代碼不易維護,實際應用中sql變化的可能較大,sql變動需要改變java代碼。
3、  使用preparedStatement向占有位符號傳參數(shù)存在硬編碼,因為sql語句的where條件不一定,可能多也可能少,修改sql還要修改代碼,系統(tǒng)不易維護。
4、  對結果集解析存在硬編碼(查詢列名),sql變化導致解析代碼變化,系統(tǒng)不易維護,如果能將數(shù)據(jù)庫記錄封裝成pojo對象解析比較方便。

三、Mybatis架構

image.png
1、  mybatis配置
SqlMapConfig.xml,此文件作為mybatis的全局配置文件,配置了mybatis的運行環(huán)境等信息。
mapper.xml文件即sql映射文件,文件中配置了操作數(shù)據(jù)庫的sql語句。此文件需要在SqlMapConfig.xml中加載。
2、  通過mybatis環(huán)境等配置信息構造SqlSessionFactory即會話工廠
3、  由會話工廠創(chuàng)建sqlSession即會話,操作數(shù)據(jù)庫需要通過sqlSession進行。
4、  mybatis底層自定義了Executor執(zhí)行器接口操作數(shù)據(jù)庫,Executor接口有兩個實現(xiàn),一個是基本執(zhí)行器、一個是緩存執(zhí)行器。
5、  Mapped Statement也是mybatis一個底層封裝對象,它包裝了mybatis配置信息及sql映射信息等。mapper.xml文件中一個sql對應一個Mapped Statement對象,sql的id即是Mapped statement的id。
6、  Mapped Statement對sql執(zhí)行輸入?yún)?shù)進行定義,包括HashMap、基本類型、pojo,Executor通過Mapped Statement在執(zhí)行sql前將輸入的java對象映射至sql中,輸入?yún)?shù)映射就是jdbc編程中對preparedStatement設置參數(shù)。
7、  Mapped Statement對sql執(zhí)行輸出結果進行定義,包括HashMap、基本類型、pojo,Executor通過Mapped Statement在執(zhí)行sql后將輸出結果映射至java對象中,輸出結果映射過程相當于jdbc編程中對結果的解析處理過程。
image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 6,220評論 0 4
  • 1 引言# 本文主要講解JDBC怎么演變到Mybatis的漸變過程,重點講解了為什么要將JDBC封裝成Mybait...
    七寸知架構閱讀 77,474評論 36 979
  • 注:orm工具的基本思想無論是用過的hibernate,mybatis,你都可以法相他們有一個共同點:1. 從配置...
    進擊的小鹿閱讀 338評論 0 1
  • 清晨,早早起床,外出。天上降下蒙蒙細雨,太陽遮住了大半張臉,灰蒙蒙的太空,像是在默默地淚流。我暗暗祈禱,愿今...
    劉冰清閱讀 398評論 0 0
  • 官方文檔 點擊這里 主mode的build.gradle Application
    簡愛WindMan閱讀 323評論 0 0

友情鏈接更多精彩內容