zoukankan      html  css  js  c++  java
  • Spring整合mybatis源码解读

      在spring1中使用mybatis非常方便,并且无感知,久之,就发现好像不太理解Mybatis的使用原理了。于是我们找到数据,代开源代码,好好理解下。

      如果没有spirng框架,也是可以使用mybatis,这样就更清楚地看到mybatis的功能点。mybatis使用时核心是SqlSessionFactory对象,而后可以获取SqlSession,然后就可以操作数据库了。

      而mybatis-spring中,最重要的是SqlSessionFactoryBean对象,创建该对象,并且注入DataSource,然后就可以开启dataSource的访问了。

    public class SqlSessionFactoryBean implements FactoryBean<SqlSessionFactory>, InitializingBean, ApplicationListener<ApplicationEvent> {
      // 会自动获取FactoryBean对象
    }

      

      springboot比这个更进一步,使用

    org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
    // 该类实现了自动化配置

      

    """"

    这意味着由 Spring 最终创建的 bean 并不是 SqlSessionFactoryBean 本身,而是工厂类(SqlSessionFactoryBean)的 getObject() 方法的返回结果。这种情况下,Spring 将会在应用启动时为你创建 SqlSessionFactory,并使用 sqlSessionFactory 这个名字存储起来。等效的 Java 代码如下:

    @Bean
    public SqlSessionFactory sqlSessionFactory() {
      SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
      factoryBean.setDataSource(dataSource());
      return factoryBean.getObject();
    }

    """

    参考博客:

      mybatis和spring是如何工作的

      mybatis中文网

    Welcome you!
  • 相关阅读:
    Goahead源码解析(转)
    登录处理
    action交互
    无需FQ,自建本地CDN,秒上StackOverFlow!
    浅谈Linux中的信号处理机制(三)
    漫谈C++11 Thread库之原子操作
    漫谈c++11 Thread库之使写多线程程序
    浅谈Linux中的信号处理机制(二)
    浅谈Linux中的信号处理机制(一)
    CentOS7 安装Nginx
  • 原文地址:https://www.cnblogs.com/Robin008/p/14852350.html
Copyright © 2011-2022 走看看