學(xué)習(xí)過(guò)框架的小伙伴都了解作為持久層框架的 MyBatis 框架,但是對(duì)于它的執(zhí)行過(guò)程也只是有個(gè)模糊的認(rèn)識(shí)。本文將以實(shí)例和大家一起分享 MyBatis 框架詳細(xì)的執(zhí)行流程。
Mybatis簡(jiǎn)介
MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以使用簡(jiǎn)單的 XML 或注解來(lái)配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。
mybatis詳細(xì)執(zhí)行流程
一、通過(guò)Resource去加載全局配置文件
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MyBatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
二、實(shí)例化sqlSessionFactoryBuilder構(gòu)造器
三、通過(guò)build中XmlConfigBuilder類去解析文件流以及環(huán)境和屬性
四、 將配置信息存放到Configuration中
五、然后實(shí)例化SqlSessionFactory實(shí)現(xiàn)類DefaultSqlSessionFactory此時(shí)進(jìn)入底層實(shí)現(xiàn)流程
六、由TransactionFactory 創(chuàng)建一個(gè)Transaction事務(wù)對(duì)象
七、創(chuàng)建執(zhí)行器Excutor,去執(zhí)行mapper
八、 創(chuàng)建SqlSession接口實(shí)現(xiàn)類DefaultSqlSession
SqlSession sqlSession = MybatisUtils.getSqlSession()
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
九、 實(shí)現(xiàn)CURD
十、判斷是否執(zhí)行成功,若沒(méi)有則回滾到事務(wù)提交器
十一、 事務(wù)提交
sqlSession.commit();
十二、 關(guān)閉
sqlSession.close();
后序
努力去看源碼,加以理解分析
并且熟練使用DeBug模式來(lái)調(diào)試程序,以及查看代碼底層是如何實(shí)現(xiàn)的。
總結(jié)
到此這篇關(guān)于 MyBatis 詳細(xì)執(zhí)行流程的文章就介紹到這了,想要列更多相關(guān) MyBatis 框架的其內(nèi)容請(qǐng)搜索W3Cschool以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持!