MyBatis是一个半自动的ORM框架,它允许我们直接编写SQL语句,在周末我自己看源码的时候发现Configuration
类在MyBatis中扮演了至关重要的角色,因为它负责保存所有的配置信息,以下我就来稍微介绍一下里面的重要一些的属性:
Environment and DataSource
在MyBatis中,Configuration
对象中有一个名为Environment
的字段,它代表了MyBatis的运行环境。每一个Environment
包含一个DataSource
和一个TransactionFactory
。DataSource
用于创建数据库连接,而TransactionFactory
用于管理事务。
DataSource
DataSource
是Environment
的一部分,用于定义如何获取数据库连接。MyBatis提供了几种内置的数据源实现,如UnpooledDataSourceFactory
、PooledDataSourceFactory
和JndiDataSourceFactory
。这些数据源工厂根据配置创建相应的数据源实例。
例如,如果你使用的是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
的工作是根据MappedStatement
和BoundSql
来与数据库交互,并返回处理后的结果。
另外,configration作为mybatis的容器里面还包含这些部分:
Configuration 的组成部分
Configuration
类内部包含了大量的属性和集合,用于管理和配置 MyBatis 的各个方面。下面我们将详细介绍其中几个重要的组成部分:
1. 数据源配置(DataSourceFactory)
DataSourceFactory
负责创建和管理数据库连接的数据源。开发者可以通过配置文件指定具体的数据源类型,例如使用 UNPOOLED
、POOLED
或 JNDI
数据源。
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就可以直接看到里面的各种属性,然后去分析他们的作用。