Spring整合Mybatis思路梳理總結(jié)
Spring整合Myabtis思路的分析
引入相關(guān)依賴
Spring
Myabtis
mysql
Mybatsi-spring
…
如何整合?
Spring:
項(xiàng)目管理框架,主要是用來(lái)負(fù)責(zé)項(xiàng)目中組件對(duì)象的創(chuàng)建,使用,銷毀。
Mybatis:
持久層框架,主要是用來(lái)簡(jiǎn)化原始jdbc技術(shù)對(duì)數(shù)據(jù)庫(kù)訪問(wèn)操作。
== >整合思路:通過(guò)Spring框架接管Mybatis框架中核心對(duì)象的創(chuàng)建。
Mybatis框架中核心對(duì)象是誰(shuí)?
- sqlSession?
- SqlSessionFactory?
- SqlSessionFactoryBuilder?
- dao?
最核心的對(duì)象必然是:SqlSessionFactory。
SqlSessionFactoryBuilder的作用就是讀取解析配置文件==【數(shù)據(jù)源配置,mapper文件配置】==,來(lái)創(chuàng)建SqlSessionFactory。
SqlSession的創(chuàng)建又依靠于SqlSessionFactory。
== > SqlSessionFactory是最核心的對(duì)象。
SM整合
整合思路:通過(guò)Spring框架接管Mybatis中核心的SqlSessionFactory對(duì)象的創(chuàng)建。
SqlSessionFactory是簡(jiǎn)單對(duì)象還是復(fù)雜對(duì)象呢?
如果是簡(jiǎn)單對(duì)象
<bean id="" class=""/>
如果是復(fù)雜對(duì)象
通過(guò)查看源碼得知,SqlSessionFactory是一個(gè)接口類型的復(fù)雜對(duì)象。
如何創(chuàng)建?
is = Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder(),build(is);
1).SqlSessionFactory(Factory)Bean implements FactoryBean<SqlSessionFactory> {
SqlSessionFactory getObject() {
is = Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder(),build(is);
}
Class getClass() {
return SqlSessionFactory.class;
}
boolean isSingleton() {
return true;
}
}
2).工廠管理SqlSessionFactory
<bean id="sqlSessionFactory" class="xxx.SqlSessionFactoryBean">
3).工廠獲取
SqlSessionFactory sf = context.getBean("sqlSessionFactory");
寫完之后,我們可以發(fā)現(xiàn),這段代碼是固定不變的,這個(gè)項(xiàng)目要寫,別的項(xiàng)目也要寫。
于是Mybatis官方替我們寫好了,對(duì)這段代碼進(jìn)行了封裝:Mybatis-spring.jar。
jar包里提供了一個(gè)類:SqlSessionFactoryBean。
我們以后只要引Mybatsi-spring依賴就可以了,不用在自己去寫了。
值得注意的是:mybatis官方提供SqlSessionFactoryBean,不在使用mybaits主配置文件。
主配置文件的核心就是【數(shù)據(jù)源】【mapper文件的注冊(cè)】
所以我們要注入數(shù)據(jù)源對(duì)象,引入druid依賴,注入mapper文件的位置?!綝I思想,依賴注入】
<!-- 配置Spring.xml文件 -->
<!-- 創(chuàng)建數(shù)據(jù)源對(duì)象 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" >
<property name="driverName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/xxx"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<bean/>
<!-- 創(chuàng)建SqlSessionFactory對(duì)象 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入數(shù)據(jù)源對(duì)象 -->
<property name="dataSource" ref="dataSource" />
<!-- 注入mapper文件的位置 -->
<property name="mapperLocations">
<array>
<value>.....</value>
</array>
</property>
<bean/>
到此這篇關(guān)于Spring整合Mybatis思路梳理總結(jié)的文章就介紹到這了,更多相關(guān)Spring整合Mybatis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis3傳遞多個(gè)參數(shù)(Multiple Parameters)
這篇文章主要介紹了MyBatis3傳遞多個(gè)參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
詳解Java如何通過(guò)裝飾器模式擴(kuò)展系統(tǒng)功能
這篇文章主要為大家詳細(xì)介紹了Java如何通過(guò)裝飾器模式擴(kuò)展系統(tǒng)功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-04-04
SpringBoot整合ShardingSphere5.x實(shí)現(xiàn)數(shù)據(jù)加解密功能(最新推薦)
這篇文章主要介紹了SpringBoot整合ShardingSphere5.x實(shí)現(xiàn)數(shù)據(jù)加解密功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
java如何使用正則表達(dá)式限制特殊字符的個(gè)數(shù)
這篇文章主要介紹了java如何使用正則表達(dá)式限制特殊字符的個(gè)數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
JAVA格式化時(shí)間日期的簡(jiǎn)單實(shí)例
這篇文章主要介紹了JAVA格式化時(shí)間日期的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2013-11-11

