前言
很多人都是用 spring 整合 mybatis,但是对于其实现原理很少做探究。
本文一起来学习一下 mybatis 整合 spring 的原理。
带着问题学习
SqlSessionFactory,SqlSession 如何生成?
Mapper 代理如何生成?如何运行?
SqlSessionFactory,SqlSession 如何生成?
由于楼主的项目是SpringBoot ,因此基本没有配置文件,只有一个简单的配置,这也是Spring团队一直追求的目标:无配置。
但由于我们的团队开始使用SpringCloud ,于是配置又多了起来,看来,配置文件始终是消灭不掉的。
那么,废话了这么多,楼主的关于Mybatis的配置由以下几个部分组成:
jar 包 maven导入artifactId 为 mybatis-spring 的jar包,该jar包是整合Spring和mybatis的粘合剂。
使用硬编码的方式配置bean。
比如SqlSessionFactory,SqlSessionTemplate, PlatformTransactionManager.
扫描接口包。
配置 SqlSessionFactory
@Bean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactoryBean() {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource());
bean.setTypeAliasesPackage(TYPE_ALIASES_PACKAGE);
// 添加插件
bean.setPlugins(MybatisUtil.getInterceptor());
// 添加XML目录
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
return bean.getObject();
}
注意:dataSource 方法会返回一个自己配置的多数据源。
但这不是我们今天的重点。