前言

很多人都是用 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

  [java]
1
2
3
4
5
6
7
8
9
10
11
12
@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 方法会返回一个自己配置的多数据源。

但这不是我们今天的重点。

参考资料

深入剖析 mybatis 原理(三)如何整合 Spring