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
- RxCache 整合 Android 的持久層框架 greenDAO、RoomAndroid框架OOM
- Java持久層框架Mybatis入門Java框架MyBatis
- 優秀PHP優秀框架Laravel和Yii的詳解PHP框架Laravel
- android 優秀框架整理Android框架
- 自己動手寫一個持久層框架框架
- vue移動端優秀框架收集Vue框架
- 國內優秀MES開源框架框架
- 怎麼使用路由框架Fluro?Flutter的這個框架太優秀了!路由框架Flutter
- Spring 持久層整合Spring
- 高效能優秀的服務框架-dubbo介紹框架
- Ocelot一個優秀的.NET API閘道器框架API框架
- Java資料持久層Java
- 閉關修煉180天--手寫持久層框架(mybatis簡易版)框架MyBatis
- 你不可不知道的20個優秀PHP框架PHP框架
- 一個優秀的Android開源框架學習專案ForgetSkyWanAndroidAndroid框架NaN
- .net core下優秀的日誌框架使用解析,附原始碼框架原始碼
- 一文看明白誰才是Node.js的優秀框架Node.js框架
- .net 下優秀的DI框架推薦,看看你用過幾個?框架
- 優秀的線上工具
- SpringBoot2 基礎案例(09):整合JPA持久層框架,簡化資料庫操作Spring Boot框架資料庫
- 「完結」優秀的深度學習從業者都有哪些優秀的習慣深度學習
- .net下優秀的日誌框架Serilog,你用上了嗎?強烈推薦框架
- MicroStream + Helidon高效能Java持久層ROSJava
- MyBatis--快速入門MyBatis
- Mybatis--動態SQLMyBatisSQL
- Mybatis--事務控制MyBatis
- 聰明優秀
- 優秀博主
- 優秀的ftp工具:Deliver for MacFTPMac
- 曾經優秀的人,怎麼就突然不優秀了。
- 優秀的美術包裹下,《明日方舟》的塔防玩法也一樣優秀
- 持久層Mybatis3底層原始碼分析,原理解析MyBatisS3原始碼
- scrapy框架持久化儲存框架持久化
- Java中的四層框架Java框架
- 優秀框架原始碼分析系列(一)讓解耦更輕鬆!多程式元件化框架-ModularizationArchitecture框架原始碼解耦元件化
- 優秀的命令列工具整理(三)命令列