建设和同城类似的网站,淘宝店铺怎么上传自己做的网站,四川省住房和城乡建设厅官方网站,设备管理系统网站模板这次讲讲Mybatis与Spring的整合#xff0c;作为两款优秀的开源框架#xff0c;被大众广泛使用#xff0c;自然是需要强强联合的。
使用示例
先看一下怎么使用#xff0c;首先需要引用这两款框架的jar包#xff1a;
dependency//spring-webmvc会自动去引入其他S…这次讲讲Mybatis与Spring的整合作为两款优秀的开源框架被大众广泛使用自然是需要强强联合的。
使用示例
先看一下怎么使用首先需要引用这两款框架的jar包
dependency//spring-webmvc会自动去引入其他Spring的核心包groupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion${spring.version}/version
/dependency
dependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion${spring.version}/version
/dependency
dependencygroupIdorg.springframework/groupIdartifactIdspring-jcl/artifactIdversion${spring.version}/version
/dependency
dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.6/version
/dependency
dependency//集成包是Mybatis和Spring的中间桥梁groupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion1.3.2/version
/dependency
在Spring的配置文件中需引入集成包的两个类
org.mybatis.spring.SqlSessionFactoryBean将Mybatis的SqlSessionFactory注入到Spring的IOC容器中
org.mybatis.spring.mapper.MapperScannerConfigurer配置Mybatis接口以及Spring容器中的SqlSessionFactory引用
配置示例
bean idsqlSessionFactoryBean classorg.mybatis.spring.SqlSessionFactoryBean//配置数据源的引用property namedataSource refdataSource/property//配置Mybatis对的配置所在类路径(可不配)property nameconfigLocation valueclasspath:mybatis-config.xml/property//配置Mapper文件所在位置property namemapperLocationslistvalueclasspath:com/test/mybatis/dao/*.xml/value/list/property
/bean bean classorg.mybatis.spring.mapper.MapperScannerConfigurer//配置DAO层接口所在位置多个DAO路径可用,隔开property namebasePackage valuecom.test.mybatis.dao/property//配置SqlSessionFactoryBean引用名称property namesqlSessionFactoryBeanName valuesqlSessionFactoryBean/property
/bean源码分析
Spring集成了Mybatis之后Mybatis的配置文件中的标签配置基本可以不需要配置都可以在Spring中的配置
先谈谈这两个类
SqlSessionFactoryBean
Mybatis中任何属性均在在这个类中可配置 我们可以发现这个实现了三个接口
FactoryBeanSqlSessionFactorySpring中Bean存在的一种形式
InitializingBeanBean的初始化方法
ApplicationListenerApplicationEventSpring IOC容器监听方法分别在容器创建、关闭、刷新、停止时执行
Bean的初始化方法 在buildSqlSessionFactory方法中就是将Mybatis的流程加载一遍。
容器的监听方法 MapperScannerConfigurer 该类实现了
BeanDefinitionRegistryPostProcessor BeanDefinitionRegistry的后置处理器即在Spring容器创建时加载可以修改Bean一些相关的信息
InitializingBeanBean的初始化方法
ApplicationContextAware上下文接口的Aware接口可将容器中上下文对象开放
BeanNameAwareBean名称Aware接口可以修改Bean的名称
重点谈一下以下两个方法 过滤器在Spring当中能够指定过滤某些类或注解等等在之前的Spring的文章好像没有谈到那就下次在说吧 在扫描的方法中会将扫描接口的一些Bean的属性进行改变 到了这里会发现将所有的接口Bean中的Class替换成MapperFactoryBean那么这些接口所有的Class类型都是MapperFactoryBean了。
其实集成包中除了之前的两个类之外还有一个MapperFactoryBean对象。
MapperFactoryBean
在MapperScannerConfigurer当中将所有的接口类型全部替换成MapperFactoryBean所以在Spring的配置文件也可以这样配置单个接口
bean iduserDao classorg.mybatis.spring.mapper.MapperFactoryBeanproperty namemapperInterface valuecom。test。mybatis。dao。UserDao/propertyproperty nameSqlSessionFactory refsqlSessionFactoryBean/property
/bean如果接口过多就需要配置很多MapperFactoryBean不方便所以一般在企业级应用中都是配置MapperScannerConfigurer。 这样我们调用DAO的接口对象就是MapperProxy的代理对象了就可以操作数据库了
示例 将FactoryBean本身的类获取到之前谈Spring的时候提到过。