MyBatis--優秀的持久層框架
1.MyBatis
什麼是MyBatis,MyBatis最早源自Apache基金會的一個開源專案
iBatis,2010年專案由Apache software foundation遷移Google
Code,改名為MyBatis
MyBatis是支援普通SQL查詢,儲存過程和高階對映的優秀持久層
框架,其使用簡單的XML配置定義對映關係,將實體類物件對映成
資料庫中記錄
MyBatis工作原理
1)載入配置
MyBatis將SQL的對映資訊載入為一個個的MappedStatement
物件(包括傳入的引數對映配置,執行的sql語句,結果對映配
置),將其儲存在記憶體中
2)SQL解析
當API介面層收到呼叫請求時,會接收到傳入SQL的ID和傳入的
引數物件(可以是Map,實體類或者基本資料型別),MyBatis
會根據SQL的ID找到相對應的MappedStatement,然後根據傳
入的引數物件對MappedStatement進行解析,解析後可以得到
最終要執行的sql語句和引數
3)SQL執行
將最終得到的sql語句和引數拿到資料庫進行執行,得到運算元據
庫的結果
4)結果對映
將運算元據庫的結果按照對映配置進行轉換,可以轉換成Map,
實體類或者基本資料型別,將轉換結果返回
MyBatis框架API
SqlSessionFactoryBuilder
此物件負責根據MyBatis主配置檔案SqlMapConfig.xml構建
SqlSessionFactory物件
SqlSessionFactory
每一個MyBatis的應用程式都以一個SqlSessionFactory物件為核心
此物件負責建立SqlSession物件
SqlSession
此物件包含所有執行sql語句操作的方法,用於執行已對映的sql語句
MyBatis配置檔案
1)SqlMapConfig.xml(1個)
主配置檔案,用於指定資料庫連線引數
2)SqlMapper.xml(N個)
對映檔案,用於定義SQL語句對映資訊
2.MyBatis基本應用
1)搭建MyBatis技術環境
為工程新增MyBatis開發包和資料庫驅動包
在src下新增MyBatis的主配置檔案SqlMapConfig.xml
配置SqlMapConfig.xml,指定資料庫連線引數
利用MyBatis提供API,獲取SqlSession物件
2)獲取SqlSession物件
String path = "主配置檔案URL";
Reader reader =
Resources.getResourceAsReader(path);
//構建SqlSessionFactory物件
SqlSessionFactoryBuilder ssfb =
new SqlSessionFactoryBuilder();
SqlSessionFactory ssf = ssfb.build(reader);
//建立SqlSession物件
SqlSession ss = ssf.openSession();
3)利用SqlSession實現CRUD操作
根據資料庫表編寫實體類
編寫SqlMapper.xml對映檔案,定義SQL操作和對映資訊
獲取SqlSession物件,執行增刪改查操作
提交事務(DML)
釋放SqlSession物件資源
返回Map型別查詢結果
select e.*,d.* from emp e inner join dept d
on e.deptno = d.deptno where e.empno = 1001
select e.*,d.* from emp e inner join dept d
on e.deptno = d.deptno and e.empno = 1001
resultMap對映定義
在對映檔案定義<select>操作時,如果查詢結果集欄位名和實體類
的屬性名不一致,則需要使用<resultMap>標籤顯示指定對映關係
注意:不一致的問題,如果結果集的欄位名和實體類的屬性名全部
不一致,且在結果對映時定義為resultType,則不會建立實體物件
但是如果只是部分不一致,則會建立實體物件,並且自動關聯名字
一致的屬性
Mapper對映器
Mapper對映器是開發者建立繫結對映語句的介面,對映器介面的
例項物件可以從SqlSession中獲得
注意:
Mapper介面名稱必須和對應的對映檔案中的namespace一致
Mapper介面中方法名必須和對映檔案中SQL的ID一致
相關文章
- 河青的持久層框架hqbatis框架BAT
- Java 持久層框架之 MyBatisJava框架MyBatis
- Java持久層框架Mybatis入門Java框架MyBatis
- 優秀PHP優秀框架Laravel和Yii的詳解PHP框架Laravel
- RxCache 整合 Android 的持久層框架 greenDAO、RoomAndroid框架OOM
- 27款優秀的CSS框架CSS框架
- 20個優秀的前端框架前端框架
- 自己動手寫一個持久層框架框架
- android 優秀框架整理Android框架
- 10 個優秀的JavaScript開發框架JavaScript框架
- 國內優秀MES開源框架框架
- vue移動端優秀框架收集Vue框架
- 值得關注的十個優秀的CSS框架CSS框架
- 推薦給開發者的20個優秀PHP框架PHP框架
- 什麼是最優秀的JavaScript框架?Angular or Backbone?JavaScript框架Angular
- 你應該知道的9個優秀的CSS框架CSS框架
- 怎麼使用路由框架Fluro?Flutter的這個框架太優秀了!路由框架Flutter
- AutoCRUD - PHP 下的透明持久層PHP
- Ocelot一個優秀的.NET API閘道器框架API框架
- 高效能優秀的服務框架-dubbo介紹框架
- 一個優秀框架的評判標準和方向框架
- Java資料持久層Java
- Spring 持久層整合Spring
- 優秀的程式設計師該如何更上一層樓程式設計師
- 優秀程式設計師的優秀歷程程式設計師
- 20個2014年最優秀的PHP框架PHP框架
- 10個優秀的移動Web應用開發框架Web框架
- 一文看明白誰才是Node.js的優秀框架Node.js框架
- 你不可不知道的20個優秀PHP框架PHP框架
- .net core下優秀的日誌框架使用解析,附原始碼框架原始碼
- 推薦10款優秀的JavaScript Web UI庫 框架和套件JavaScriptWebUI框架套件
- 閉關修煉180天--手寫持久層框架(mybatis簡易版)框架MyBatis
- [轉]9個優秀的基於 JavaScript 與 CSS 的 Web 圖表框架JavaScriptCSSWeb框架
- MyBatis--快速入門MyBatis
- Mybatis--動態SQLMyBatisSQL
- Mybatis--事務控制MyBatis
- .net 下優秀的DI框架推薦,看看你用過幾個?框架
- 優秀工具推薦:超實用的CSS庫 樣板和框架CSS框架