Spring整合mybatis實(shí)現(xiàn)過(guò)程詳解
增加了用于處理MyBatis的兩個(gè)bean:SqlSessionFactoryBean、MapperFactoryBean
1、注冊(cè)SqlSessionFactoryBean:

(1)實(shí)現(xiàn) InitializingBean:調(diào)用其afterPropertiesSet方法(this.sqlSessionFactory = buildSqlSessionFactory())
目的就是對(duì)于sqlSessionFactory的初始化。
(2)FactoryBean:getBean方法獲取bean(= 獲取此類的getObject()返回的實(shí)例)
if (this.sqlSessionFactory == null) {
afterPropertiesSet();
}
return this.sqlSessionFactory;
2、注冊(cè)MapperFactoryBean:

同樣實(shí)現(xiàn)FactoryBean和InitializingBean
this.sqlSessionTemplate = createSqlSessionTemplate(sqlSessionFactory); //sqlSession作為根據(jù)接口創(chuàng)建映射器代理的接觸類一定不可以為空, 設(shè)定其sqlSessionFactory屬性時(shí)完成初始化。
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="org.cellphone.uc.repo.mapper.UserMapper"/> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>//接口是映射器的基礎(chǔ),sqlSession會(huì)根據(jù)接口動(dòng)態(tài)創(chuàng)建相應(yīng)的代理類,所以接口必不可少。
1.0:UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
2.0:UserMapper userMapper = (UserMapper) context.getBean("userMapper");
//MyBatis在獲取映射的過(guò)程中根據(jù)配置信息為UserMapper類型動(dòng)態(tài)創(chuàng)建了代理類
3、使用MapperScannerConfigurer:

讓它掃描特定的包,自動(dòng)幫我們成批地創(chuàng)建映射器。不需要我們對(duì)于每個(gè)接口都注冊(cè)一個(gè)MapperFactoryBean類型的對(duì)應(yīng)的bean,在掃描的過(guò)程中通過(guò)編碼的方式動(dòng)態(tài)注冊(cè)。
抽象:屏蔽掉了最原始的代碼(userMapper的創(chuàng)建)而增加了MapperScannerConfigurer的配置
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解SpringMVC和MyBatis框架開(kāi)發(fā)環(huán)境搭建和簡(jiǎn)單實(shí)用
這篇文章主要介紹了詳解SpringMVC和MyBatis框架開(kāi)發(fā)環(huán)境搭建和簡(jiǎn)單實(shí)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
最新版IDEA配置 Tomcat的詳細(xì)過(guò)程
本文介紹如何在IDEA中配置Tomcat服務(wù)器,并創(chuàng)建Web項(xiàng)目,首先檢查Tomcat是否安裝完成,然后在IDEA中創(chuàng)建Web項(xiàng)目并添加Web結(jié)構(gòu),接著,配置編譯輸出路徑和依賴,將Tomcat的jar包復(fù)制到項(xiàng)目中,最后,配置Tomcat服務(wù)器并運(yùn)行項(xiàng)目,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-01-01
Java線程本地變量導(dǎo)致的緩存問(wèn)題解決方法
使用緩存可以緩解大流量壓力,顯著提高程序的性能,我們?cè)谑褂镁彺嫦到y(tǒng)時(shí),尤其是大并發(fā)情況下,經(jīng)常會(huì)遇到一些疑難雜癥,這篇文章主要給大家介紹了關(guān)于Java線程本地變量導(dǎo)致的緩存問(wèn)題的解決方法,需要的朋友可以參考下,2024-08-08
Java?LocalTime的常用時(shí)間操作總結(jié)
日常開(kāi)發(fā)中,?我們會(huì)經(jīng)常遇到時(shí)間的運(yùn)算,?操作,?格式化等,?這篇文章主要為大家詳細(xì)介紹了LocalTime的常用時(shí)間操作,感興趣的小伙伴可以了解一下2023-11-11
Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的長(zhǎng)輪詢的示例代碼
長(zhǎng)輪詢是與服務(wù)器保持即時(shí)通信的最簡(jiǎn)單的方式,它不使用任何特定的協(xié)議,例如 WebSocket ,所以也不依賴于瀏覽器版本等外部條件的兼容性。本文將用Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的長(zhǎng)輪詢,需要的可以參考一下2022-08-08
Spring Boot 集成 RocketMQ 全流程指南(從依賴引入到消息收發(fā)
本文將通過(guò) 手動(dòng)連接 和 配置連接 兩種方式,詳細(xì)講解如何在 Spring Boot 中集成 RocketMQ,實(shí)現(xiàn)消息的同步與異步發(fā)送,并提供完整示例代碼,感興趣的朋友一起看看吧2025-04-04

