Mybatis的底层源码了解

MyBatis是一个半自动的ORM框架,它允许我们直接编写SQL语句,在周末我自己看源码的时候发现Configuration类在MyBatis中扮演了至关重要的角色,因为它负责保存所有的配置信息,以下我就来稍微介绍一下里面的重要一些的属性:

Environment and DataSource

在MyBatis中,Configuration对象中有一个名为Environment的字段,它代表了MyBatis的运行环境。每一个Environment包含一个DataSource和一个TransactionFactoryDataSource用于创建数据库连接,而TransactionFactory用于管理事务。

DataSource

DataSourceEnvironment的一部分,用于定义如何获取数据库连接。MyBatis提供了几种内置的数据源实现,如UnpooledDataSourceFactoryPooledDataSourceFactoryJndiDataSourceFactory。这些数据源工厂根据配置创建相应的数据源实例。

例如,如果你使用的是PooledDataSourceFactory,那么MyBatis将会使用一个连接池来管理数据库连接,这样可以提高应用的性能,减少每次打开和关闭数据库连接所带来的开销。

MappedStatement

MappedStatement是MyBatis内部的一个重要概念,它封装了所有执行SQL语句所需的信息。当你通过XML映射文件或者注解定义了一个SQL语句后,MyBatis会在内部创建一个MappedStatement对象来存储这个SQL语句的信息。

SQL Statement Storage

MappedStatement对象中,最重要的属性之一就是sqlSource,它包含了SQL语句本身。sqlSource能够根据传入的参数动态生成最终要执行的SQL语句。此外,MappedStatement还包括了其他配置信息,如语句ID、语句类型、结果映射等。

当执行一个SQL语句时,MyBatis会根据MappedStatement中的信息创建一个BoundSql对象,这个对象包含了预编译后的SQL语句和参数设置信息。BoundSql对象随后被传递给Executor,由其负责执行SQL语句并与数据库交互。

Executor Layer

Executor是MyBatis中的另一个重要组件,它负责执行SQL语句。Executor可以是简单的直接执行,也可以是批量执行或缓存执行。Executor的工作是根据MappedStatementBoundSql来与数据库交互,并返回处理后的结果。

另外,configration作为mybatis的容器里面还包含这些部分:

Configuration 的组成部分

Configuration 类内部包含了大量的属性和集合,用于管理和配置 MyBatis 的各个方面。下面我们将详细介绍其中几个重要的组成部分:

1. 数据源配置(DataSourceFactory)

DataSourceFactory 负责创建和管理数据库连接的数据源。开发者可以通过配置文件指定具体的数据源类型,例如使用 UNPOOLEDPOOLEDJNDI 数据源。

2. 环境配置(Environment)

Environment 定义了 MyBatis 运行的环境,包括事务工厂(TransactionFactory)和数据源(DataSource)。开发者可以根据不同的环境(如开发、测试、生产)配置不同的环境设置。

3. 映射器配置(MapperRegistry)

MapperRegistry 用于注册映射器接口(Mapper Interface),通过代理模式生成具体的映射器对象。每个映射器接口都有对应的 XML 映射文件或注解,描述了 SQL 语句和结果映射规则。

4. SQL 语句映射(MappedStatement)

MappedStatement 是 MyBatis 内部用来存储 SQL 语句及其配置信息的对象。它包含了 SQL 语句的 ID、语句类型(如 SELECT、INSERT)、参数映射、结果映射等信息。MappedStatement 是 MyBatis 执行 SQL 的关键,它通过解析映射文件或注解生成。

5. 缓存配置(Cache)

Cache 是 MyBatis 提供的一种优化机制,可以配置为全局缓存或局部缓存。全局缓存适用于跨映射器的结果缓存,而局部缓存则仅限于单个映射器内的结果缓存。

6. 类型处理器(TypeHandlerRegistry)

TypeHandlerRegistry 管理着 MyBatis 的类型处理器,用于处理 Java 类型和数据库类型之间的转换。开发者可以通过注册自定义的类型处理器来扩展 MyBatis 的数据处理能力。

7. 事务工厂(TransactionFactory)

TransactionFactory 负责创建和管理事务对象。MyBatis 支持多种事务管理方式,包括 JDBC 事务和 JTA 事务。

还有很多可以直接去ideal中搜索configration就可以直接看到里面的各种属性,然后去分析他们的作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值