MyBatis入門

參考資料書《Java EE 互聯(lián)網(wǎng)輕量級框架整合開發(fā)》

MyBatis特點

持久層可以將業(yè)務數(shù)據(jù)存儲到磁盤,具備長期儲存能力

可以精準的定位SQL語句,可以對其進行優(yōu)化和改造

提供強大,靈活的映射機制,方便Java開發(fā)者的使用,提供動態(tài)SQL的功能,允許根據(jù)不同條件組裝SQL,比其他工具或者Java編碼的可讀性和可維護性高得多,滿足各種應用系統(tǒng)的同時也滿足了需求經常變化的互聯(lián)網(wǎng)用用的要求

MyBatis中提供了使用Mapper的接口編程,只要一個接口和一個XML就能創(chuàng)建映射器,進一步簡化工作,是很多框架API在MyBatis中消失,開發(fā)者更集中于業(yè)務邏輯

NyBatis核心組件

SqlSessionfactoryBuilder(構造器)
它會根據(jù)配置或者代碼來生成SqlSessionfactory,采用的是分步構建的Builder模式
SqlSessionfactory(工程接口)
依靠它來生成SqlSession,使用的是工程模式
SqlSession(會話)
一個既可以發(fā)送SQL執(zhí)行返回結果,也可以獲取Mapper的接口.在現(xiàn)有的技術中,一般我們會讓其在業(yè)務邏輯代碼中"消失";而使用的是MyBatis提供的SQL Mapper接口編程技術,它能提高代碼的可讀性和可維護性
SQL Mapper(映射器)
MyBatis新設計訊在的組件,它由一個Java接口和XML文件構成,需要給出對應的SQL和映射規(guī)則,它負責發(fā)送SQL去執(zhí)行,并返回結果

SSF 工廠接口

使用MyBatis首先使用配置或者代碼去生產ssf,而MyBatis提供了構造器SqlSessionFactoryBuilder,它提供了一個類org.apache.ibtis.session.Configuration作為引導

可以通過讀取配置的XMl文件的形式生成ssf (推薦)
也可以通過Java代碼的形式去生成ssf

每個基于MyBatis的應用都是一個以ssf為實例為中心的,
而ssf唯一的作用就是生產MyBatis的核心接口對象SqlSession,所以他的責任是唯一的,
往往會采用單例模式處理它

使用XML構建SqlSessionFactory
MyBatis中XMl文件分為兩類,一類是基礎配置文件,通常只有一個:主要是配置一些最基本的上下文參數(shù)和運行環(huán)境
另一類是映射文件,它可以配置映射關系,SQL,參數(shù)等信息

復制粘貼哦
通過XML構建SqlSessionFactory

SqlSessionFactory ssf = null;

String resource = "config.xml";

InputStream is;
    
    is = Resoueces.getResourceAsStream(resource);
    
    ssf = new SqlSessionFactory().build(is);

讀取config文件,通過SqlSessionFactory的Builder方法去創(chuàng)建ssf

SqlSession

MyBatis中SqlSession是核心接口,有兩個實現(xiàn)類:DefaultSqlSession(單線程) SqlSessionMapper(多線程)
SqlSession有一個類似于JDBC的Connectiob對象,代表著一個連接資源的啟用,具體作用:
1: 獲取Mapper接口
2: 發(fā)送SQL給數(shù)據(jù)庫
3: 控制數(shù)據(jù)庫事務
SqlSession sqlSession = null;

try {
    //打開會話
    sqlSession = SqlSeesionfactory.openSession();
    sqlSession.commin();//提交事務
}catch(Exception ex) {
    sqlSession.rollback(); //回滾事務
}finally {
    //在finally語句中確保資源被順利關閉
    if(sqlSession != null) {
        sqlSession.close();
    }
}

commit方法提交事務或者使用rollback方法回滾事務,使用后要及時關閉

映射器

由一個接口和對應的XML文件組成,可以配置:
1: 描述映射規(guī)則
2: 提供SQL語句,并可以配置SQL參數(shù)類型,返回類型,緩存刷新等信息
3: 配置緩存
4: 提供動態(tài)SQl

接口 會運行 會運行 會運行

用XML實現(xiàn)映射器
注解實現(xiàn)映射器

SqlSession發(fā)送SQL

有映射器之后可以通過SqlSession發(fā)送SQL

用Mapper接口發(fā)送SQL

生命周期

SqlSessionFactoryBuilder
ssfb的作用在于創(chuàng)建ssf,創(chuàng)建成功后,ssfb就是去了作用,所以只能存在于創(chuàng)建ssf的方法中,而不要讓其長期存在
SqlSessionFactory
ssf可以被認為是一個數(shù)據(jù)庫連接池,它的作用是創(chuàng)建SqlSession接口對象
因為MyBatis的本質就是Java對數(shù)據(jù)庫的操作,所以SqlSessionFactory的生命周期存在于整個MyBatis的應用之中,所以一旦創(chuàng)建,就要長期保存,
直至不再使用MyBatis應用,所以可以認為SqlSessionFactory的生命周期就等同于MyBatis的創(chuàng)建周期
單例
SqlSession
ssf如果相當于數(shù)據(jù)庫連接池,那么SqlSession就相當于一個數(shù)據(jù)庫的連接對象,
Mapper
接口
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容