码迷,mamicode.com
首页 > 编程语言 > 详细

MyBatis整合Spring的实现(1)

时间:2015-10-24 17:33:09      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:

目的

    MyBatis是一个基于Java的持久层框架。也是很多程序员的最爱,因为自己控制的SQL时,写出一个好的SQL会大大的提高整体程序的性能。目前的项目一般都是MyBatis和Spring的整合,那么具体的逻辑是什么样子呢?下面就来分析一下具体的代码及逻辑。

Spring的XML配置(样例):

技术分享

对于上面XML的配置信息,也就是Spring对一个类进行了实例化。那我们就来看看SqlSeesionFactoryBean类到底做了什么操作呢?

先看一下类中有哪些属性:

  /** 日志类 */

  private final Log logger = LogFactory.getLog(getClass());

  /** mybatis的全局配置信息 */

  private Resource configLocation;

  /** mybatis的SQL文件信息 */

  private Resource[] mapperLocations;

  /** 数据源 */

  private DataSource dataSource;

  /** 事务工厂 */

  private TransactionFactory transactionFactory;

  /** spring配置文件中mybatis的属性 */

  private Properties configurationProperties;

  /** SqlSessionFactoryBuilder  */

  private SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

  /** mybatis的SqlSessionFactory工厂  */

  private SqlSessionFactory sqlSessionFactory;

  private String environment = SqlSessionFactoryBean.class.getSimpleName();

  private boolean failFast;

  /** spring配置文件中mybatis的拦截器 */

  private Interceptor[] plugins;

  /** spring配置文件中mybatis的自定义类型集合 */

  private TypeHandler<?>[] typeHandlers;

  /** spring配置文件中mybatis的自定义类型 */

  private String typeHandlersPackage;

  /** spring配置文件中mybatis的别名集合 */

  private Class<?>[] typeAliases;

  /** spring配置文件中mybatis的别名包 */

  private String typeAliasesPackage;

  /** 数据库产品名 */

  private DatabaseIdProvider databaseIdProvider = new DefaultDatabaseIdProvider();

以上属性全部是Spring配置文件的属性。

技术分享

图中由于 实现了InitializingBean类,也就是需要执行初始化代码。

技术分享

这里数据源与SqlSessionFactoryBuilder不能为空,然后去构建SqlSessionFactory 。

具体的实现:

技术分享

1:生成一个MyBatis的全局对象Configuration。

技术分享

2:读取typeAliasesPackage属性并解析,放入Configuration对象中,对应TypeAliasRegistry

技术分享

3:读取typeAliases属性并解析,放入Configuration对象中,对应TypeAliasRegistry类

技术分享

4:读取plugins属性并解析,放入Configuration对象中,对应InterceptorChain类。

技术分享

5:读取typeHandlersPackage属性并解析,放入Configuration对象中,对应TypeHandlerRegistry类。

技术分享

6:读取typeHandlers属性并解析,放入Configuration对象中,对应TypeHandlerRegistry类。

技术分享

7:解析MyBatis的全局配置文件,创建Spring事务。

技术分享

8:重新生成环境信息,设置数据库产品名称。

技术分享

9:解析MyBatis的SQL文件。

技术分享

10:最后生成一个SqlSessionFactory对象。

总结:

注意一定要区分,什么时候读取Spring配置文件,什么时候读取MyBatis配置文件。

具体MyBatis的操作只能一步一步的去研究。

MyBatis整合Spring的实现(1)

标签:

原文地址:http://my.oschina.net/u/1269959/blog/521571

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!