`

MyBatis 源码 学习一

 
阅读更多

Configuration: MyBatis在运行期的基本上所有的数据都会汇总到这个类。它的初始数据是来自开发人员配置在configuration的xml配置文件

MyBatis允许用户的自定义插件可以拦截ParameterHandler,ResultSetHandler,StatementHandler,Executor接口,从而进行一些操作。

 

 

SqlSessionFactoryBuilder类(入口) 里的build方法   中调用XMLConfigBuilder类的parse方法进行配置文件的读取。

 

SqlSessionFactoryBuilder类 入口代码: 创建SqlSessionFactory对象

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

    try {

      XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties);

      return build(parser.parse());

    } catch (Exception e) {

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

    } finally {

      ErrorContext.instance().reset();

      try {

        reader.close();

      } catch (IOException e) {

        // Intentionally ignore. Prefer previous error.

      }

    }

  }

  

 parser.parse()方法用于读取mapping中的配置文件内容。

 XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties); 构造方法中调用   super(new Configuration()); Configuration()构造方法 如下:

 

   private XMLConfigBuilder(XPathParser parser, String environment, Properties props) {

    super(new Configuration());

    ErrorContext.instance().resource("SQL Mapper Configuration");

    this.configuration.setVariables(props);

    this.parsed = false;

    this.environment = environment;

    this.parser = parser; 

  }

  

 

关键方法:SqlSession中的getMapper方法. 桥梁作用,通过java动态代理实现。。(SqlSession有一个重要的方法getMapper,顾名思义,这个方式是用来获取Mapper对象的。什么是Mapper对象?根据Mybatis的官方手册,应用程序除了要初始并启动Mybatis之外,还需要定义一些接口,接口里定义访问数据库的方法,存放接口的包路径下需要放置同名的XML配置文件。SqlSession的getMapper方法是联系应用程序和Mybatis纽带,应用程序访问getMapper时,Mybatis会根据传入的接口类型和对应的XML配置文件生成一个代理对象,这个代理对象就叫Mapper对象。应用程序获得Mapper对象后,就应该通过这个Mapper对象来访问Mybatis的SqlSession对象,这样就达到里插入到Mybatis流程的目的。)

  

  

  

  

  

 

分享到:
评论

相关推荐

    MyBatis源码详解学习.zip

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

    Mybatis源码分析.pdf

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

    Mybatis源码学习-代码+笔记

    在深入学习Mybatis源码的过程中,我们可以了解到它的工作原理,更好地优化数据库交互,提高程序性能。 1. **Mybatis概述** Mybatis 源码的学习可以帮助开发者理解其内部机制,包括动态SQL的解析、SQL映射文件与...

    mybatis源码分析视频

    本资源“mybatis源码分析视频”是针对MyBatis框架进行深入剖析的教程,通过视频和文档的形式帮助学习者理解其内部工作机制。 1. **MyBatis简介** MyBatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果集。...

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

    通过对阿里巴巴P7架构师精心制作的MyBatis源码解析文档的学习,我们可以深入了解MyBatis的工作原理及其内部实现细节。这不仅有助于我们更好地理解和使用MyBatis,还能为我们解决实际开发中遇到的问题提供有力的支持...

    5套完整springboot+mybatis源码下载只供学习之用.rar

    通过学习这些源码,你可以深入理解SpringBoot如何启动、如何配置自动装配,以及MyBatis如何与数据库交互。同时,Shiro的使用也能帮助你掌握用户权限的控制。对于初学者,这是一个很好的实践平台,对于有经验的开发者...

    MyBatis源码学习环境

    MyBatis源码学习环境:均已附上注释 传统方式 mapper代理方式 mybatis二级缓存效果测试 mybatis嵌套效果测试 可连接自己的本地数据库进行测试练习 已通过测试代码模拟MyBatis的执行流程

    mybatis源码jar包

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis源码之前,我们首先需要理解...通过源码学习,我们可以更好地应用这些模式到自己的项目中,提升代码质量和可维护性。

    Mybatis源码学习加注释,方便学习.zip

    Mybatis源码学习加注释,方便学习 Mybatis源码学习加注释,方便学习 Mybatis源码学习加注释,方便学习 Mybatis源码学习加注释,方便学习 Mybatis源码学习加注释,方便学习 ...

    mybatis源码分析思维导图.rar

    MyBatis是一款流行的Java...总的来说,MyBatis源码分析思维导图会涵盖MyBatis的各个关键组件、工作流程、特性以及扩展机制。通过深入学习和理解这些内容,开发者能够更好地利用MyBatis进行数据库操作,并优化其性能。

    mybatis源码.rar

    1. SQL动态生成:MyBatis的核心之一是SQL动态语句。在XML配置文件或注解中,我们可以编写动态SQL,例如`<if>`、`<choose>`、`<when>`、`<otherwise>`等标签,这些在编译时会被MyBatis解析为Java代码,动态生成SQL...

    Spring整合Mybatis源码解析

    Spring整合Mybatis源码解析

    Mybatis学习源码的实例代码

    此外,学习Mybatis源码还能帮助你理解如何自定义插件,比如Interceptor拦截器,它可以插入到Executor、StatementHandler、ParameterHandler、ResultSetHandler的执行链中,实现自定义功能。 总的来说,这个实例代码...

    mybatis源码学习代码

    本资源“mybatis源码学习代码”是针对MyBatis框架源码的学习材料,主要关注其SQL映射机制。下面将详细探讨MyBatis的核心功能和SQL映射的相关知识点。 首先,MyBatis的核心设计理念是将SQL语句与Java代码分离,通过...

    MyBatis源码demo

    总结起来,MyBatis源码的学习不仅可以帮助我们理解其内部工作原理,还能提升我们在实际项目中的应用能力。通过对"MyBatisWeb"项目的实践,可以更好地理解和掌握MyBatis的配置、Mapper接口、XML映射以及Spring整合等...

    mybatis源码

    通过对"Mybatis-3-master"源码的学习,你可以深入理解这些核心组件的实现细节,比如Executor如何执行SQL,Mapper接口是如何被动态代理的,参数映射和结果映射的具体过程,以及缓存机制的实现方式。这不仅有助于提升...

    mybatis源码和官方的中文文档

    2. **MyBatis源码解析**: `mybatis-2.3.5-sources.jar`包含了MyBatis的源代码,这对于我们理解框架内部工作流程极其有价值。例如,你可以看到`SqlSession`、`SqlSessionFactory`和`Mapper`接口的实现,以及如何...

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

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

Global site tag (gtag.js) - Google Analytics