`
gaojingsong
  • 浏览: 1201552 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【Mybatis源码阅读之SqlSessionFactory 何时实例化】

阅读更多

 //mybatis的配置文件

String resource = "conf.xml";

//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)

// InputStream is = App.class.getClassLoader().getResourceAsStream(resource);

Reader reader = Resources.getResourceAsReader(resource);

//构建sqlSession的工厂

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);

//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)

//Reader reader = Resources.getResourceAsReader(resource); 

//构建sqlSession的工厂

//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);

//创建能执行映射文件中sql的sqlSession

SqlSession session = sessionFactory.openSession();

 

二、认识接口

public interface SqlSessionFactory {

    疑问:接口何时实例化??

}

 

public SqlSessionFactory build(Reader reader) {

    return build(reader, null, null);

}

 

 public SqlSessionFactory build(Reader reader, String environment, Properties props) {

    return build(new ReaderInputStream(reader), environment, props);

 }

 

public SqlSessionFactory build(InputStream inputStream, String environment, Properties props) {

    try {

      XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, props);

      Configuration config = parser.parse();

      return build(config);

    } catch (Exception e) {

      throw ExceptionFactory.wrapException("Error building SqlSession.", e);

    } finally {

      ErrorContext.instance().reset();

      try {

        inputStream.close();

      } catch (IOException e) {

        // Intentionally ignore.  Prefer previous error.

      }

    }

 }



 

 public SqlSessionFactory build(Configuration config) {

     //接口此时完成实例化

    return new DefaultSqlSessionFactory(config);

  }

 

  • 大小: 69.3 KB
0
0
分享到:
评论

相关推荐

    Mybatis源码分析.pdf

    总结起来,MyBatis源码分析涵盖了从配置加载到数据库操作的全过程,涉及到了配置解析、SQL执行、结果映射等多个关键环节,以及Executor、StatementHandler等核心组件。通过深入学习MyBatis的源码,开发者不仅可以...

    阿里巴巴P7架构师纯手工打造MyBatis源码——1小时解密底层源码.txt

    ### MyBatis源码解析——由阿里巴巴P7架构师纯手工打造 #### 一、前言 在现代软件开发过程中,持久层框架如MyBatis因其简单易用、灵活高效的特点而受到广泛欢迎。作为一款优秀的Java持久层框架,MyBatis通过SQL...

    MyBatis源码详解学习.zip

    《MyBatis源码详解学习》是一份专为对MyBatis源码感兴趣的开发者准备的资料,它旨在帮助读者深入理解这个流行持久层框架的工作原理。MyBatis作为一个轻量级的ORM(对象关系映射)框架,因其简单易用、高度可定制化的...

    mybatis源码+配置步骤+包文件

    一、MyBatis源码解析 MyBatis的源码主要由SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession和Mapper接口等核心组件构成。SqlSessionFactoryBuilder用于创建SqlSessionFactory,它是MyBatis的核心工厂类。...

    mybatis源码.rar

    在运行时,MyBatis通过`MapperRegistry`和`MapperProxy`来实例化和调用映射器,实现方法调用到SQL执行的转化。 5. 事务管理:MyBatis提供了Transaction接口,用于处理数据库事务。它可以集成Spring等容器进行管理,...

    手撕Mybatis源码,自己动手实现Mybatis

    着手“手撕Mybatis源码,自己动手实现Mybatis”是一项深入理解其内部机制的挑战,也是提升自身编程技能的绝佳途径。下面我们将探讨Mybatis的核心组件和工作原理,以及如何基于这些知识构建一个类似的框架。 1. **...

    MyBatis源码demo

    在源码层面,MyBatis通过DefaultSqlSessionFactory来实例化SqlSession。DefaultSqlSessionFactory会读取配置文件(mybatis-config.xml),解析出DataSource、TransactionManager等关键信息。SqlSession的openSession...

    mybatis源码

    在深入MyBatis源码之前,我们需要了解一些基础概念。MyBatis的核心组件包括SqlSessionFactory、SqlSession和Mapper接口。SqlSessionFactory是MyBatis的主要工厂类,用于创建SqlSession实例,而SqlSession则负责执行...

    mybatis-3-mybatis-3.4.1源码

    通过对MyBatis源码的阅读和分析,开发者能够深入理解数据库操作的底层细节,提高编程效率,同时也能更好地应对性能优化、异常处理和扩展需求。对于任何想成为优秀Java开发者的程序员来说,研究MyBatis源码都是一个...

    mybatis源码(可以直接导入idea)

    深入学习MyBatis源码,可以让我们在开发过程中更好地利用它,避免潜在的问题,并且能够根据项目需求进行扩展和定制。对于有经验的开发者,源码分析有助于优化数据库操作,提高应用程序的性能。总之,"mybatis-3-...

    MyBatis入门实例源码

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...

    mybatis源码包

    SqlSessionFactory是MyBatis的主要组件,用于创建SqlSession实例,它是线程安全的,可以被多个并发线程共享。 2. **SqlSessionFactory**: 通过SqlSessionFactoryBuilder创建后,SqlSessionFactory负责创建...

    互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析 .rar

    SSM框架,全称为Spring、Spring MVC和MyBatis,是Java开发中广泛使用的轻量级Web...提供的"互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析.pdf"文档,无疑是一份宝贵的参考资料,值得深入研究。

    mybatis-3-mybatis-3.5.8.zip源码

    1. **SqlSessionFactoryBuilder**: 用于构建SqlSessionFactory,它是MyBatis的核心工厂类,可以创建SqlSessionFactory实例,通常在应用程序启动时初始化。 2. **SqlSessionFactory**: 提供SqlSession的创建,...

    mybatis项目源码

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis项目源码之前,我们先要理解MyBatis的基本概念和核心功能。 MyBatis的主要特点包括: 1. **SQL定制**:MyBatis允许...

    mybatis源码加注释

    1. **SqlSessionFactoryBuilder**:这个类用于构建SqlSessionFactory,它是MyBatis的核心工厂,负责创建SqlSessionFactory实例。你可以通过它来加载配置文件或者提供一个已经存在的Configuration对象。 2. **...

    mybatis-3.3.1源码

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis 3.3.1的源码之前,先了解一下MyBatis的基本概念和工作原理。 MyBatis的核心是SQL映射文件和SqlSessionFactory。SQL...

    SpringMVC+Mybatis demo

    在"SpringMVC+Mybatis demo"中,MyBatis与Spring结合,通过Spring的SqlSessionFactoryBean创建SqlSessionFactory,进一步生成SqlSession实例。Mapper接口的实现通常会使用`@Mapper`注解,这样Spring能够自动扫描并...

    mybatis-3-mybatis-3.4.5 源码

    通过对MyBatis源码的学习,我们可以了解到MyBatis如何解析配置,如何构建SQL,如何处理参数和结果,以及如何利用缓存提高性能。这对于理解和优化MyBatis的应用,甚至开发自己的持久层框架都有极大的帮助。在阅读源码...

Global site tag (gtag.js) - Google Analytics