日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Mybatis源码之与Spring集成包

發(fā)布時間:2025/3/11 javascript 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mybatis源码之与Spring集成包 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這次講講Mybatis與Spring的整合,作為兩款優(yōu)秀的開源框架,被大眾廣泛使用,自然是需要強(qiáng)強(qiáng)聯(lián)合的。

使用示例

先看一下怎么使用,首先需要引用這兩款框架的jar包:

<dependency>//spring-webmvc會自動去引入其他Spring的核心包<groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>spring-jcl</artifactId><version>${spring.version}</version> </dependency> <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version> </dependency> <dependency>//集成包,是Mybatis和Spring的中間橋梁<groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.2</version> </dependency>

在Spring的配置文件中需引入集成包的兩個類:

org.mybatis.spring.SqlSessionFactoryBean:將Mybatis的SqlSessionFactory注入到Spring的IOC容器中;

org.mybatis.spring.mapper.MapperScannerConfigurer:配置Mybatis接口以及Spring容器中的SqlSessionFactory引用;

配置示例:

<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">//配置數(shù)據(jù)源的引用<property name="dataSource" ref="dataSource"></property>//配置Mybatis對的配置所在類路徑(可不配)<property name="configLocation" value="classpath:mybatis-config.xml"></property>//配置Mapper文件所在位置<property name="mapperLocations"><list><value>classpath:com/test/mybatis/dao/*.xml</value></list></property> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">//配置DAO層接口所在位置,多個DAO路徑可用,隔開<property name="basePackage" value="com.test.mybatis.dao"></property>//配置SqlSessionFactoryBean引用名稱<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"></property> </bean>

源碼分析

Spring集成了Mybatis之后Mybatis的配置文件中的標(biāo)簽配置基本可以不需要配置,都可以在Spring中的配置;

先談?wù)勥@兩個類:

SqlSessionFactoryBean

Mybatis中任何屬性均在在這個類中可配置:

我們可以發(fā)現(xiàn)這個實現(xiàn)了三個接口:

FactoryBean<SqlSessionFactory>:Spring中Bean存在的一種形式;

InitializingBean:Bean的初始化方法;

ApplicationListener<ApplicationEvent>:Spring IOC容器監(jiān)聽方法,分別在容器創(chuàng)建、關(guān)閉、刷新、停止時執(zhí)行;

Bean的初始化方法:

在buildSqlSessionFactory方法中就是將Mybatis的流程加載一遍。

容器的監(jiān)聽方法:

MapperScannerConfigurer

該類實現(xiàn)了:

BeanDefinitionRegistryPostProcessor:?BeanDefinitionRegistry的后置處理器,即在Spring容器創(chuàng)建時加載,可以修改Bean一些相關(guān)的信息;

InitializingBean:Bean的初始化方法:

ApplicationContextAware:上下文接口的Aware接口,可將容器中上下文對象開放;

BeanNameAware:Bean名稱Aware接口,可以修改Bean的名稱;

重點談一下以下兩個方法:

過濾器,在Spring當(dāng)中能夠指定過濾某些類或注解等等,在之前的Spring的文章好像沒有談到,那就下次在說吧:

在掃描的方法中,會將掃描接口的一些Bean的屬性進(jìn)行改變:

到了這里會發(fā)現(xiàn)將所有的接口Bean中的Class替換成MapperFactoryBean,那么這些接口所有的Class類型都是MapperFactoryBean了。

其實集成包中除了之前的兩個類之外,還有一個MapperFactoryBean對象。

MapperFactoryBean

在MapperScannerConfigurer當(dāng)中將所有的接口類型全部替換成MapperFactoryBean,所以在Spring的配置文件也可以這樣配置單個接口:

<bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="mapperInterface" value="com。test。mybatis。dao。UserDao"></property><property name="SqlSessionFactory" ref="sqlSessionFactoryBean"></property> </bean>

如果接口過多,就需要配置很多MapperFactoryBean,不方便,所以一般在企業(yè)級應(yīng)用中都是配置MapperScannerConfigurer。

這樣我們調(diào)用DAO的接口對象就是MapperProxy的代理對象了,就可以操作數(shù)據(jù)庫了

示例:

&將FactoryBean本身的類獲取到,之前談Spring的時候提到過。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Mybatis源码之与Spring集成包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。