深入解析 MyBatis 核心配置文件
MyBatis 是一个优秀的持久层框架,它通过 XML 配置文件来管理数据库连接、SQL 映射、事务等核心功能。本文将详细解析一个典型的 MyBatis 核心配置文件,逐个解释其中的配置项,帮助大家更好地理解 MyBatis 的核心配置。
1. XML 声明与 DTD 定义
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<?xml version="1.0" encoding="UTF-8" ?>
: 声明这是一个 XML 文件,版本为 1.0,编码为 UTF-8。<!DOCTYPE configuration>
: 定义文档类型,指定 MyBatis 配置文件的 DTD(文档类型定义)。-//mybatis.org//DTD Config 3.0//EN
: 表示这是一个 MyBatis 3.0 的配置文件。http://mybatis.org/dtd/mybatis-3-config.dtd
: 指定 DTD 文件的 URL,用于验证配置文件的结构。
2. <configuration>
根元素
<configuration>
<!-- 配置内容 -->
</configuration>
<configuration>
: MyBatis 配置文件的根元素,所有配置项都放在这个标签内。
3. 加载外部配置文件
<properties resource="db.properties"></properties>
<properties>
: 用于加载外部的属性文件。resource="db.properties"
: 指定外部属性文件的路径,这里是db.properties
,通常用于存储数据库连接信息(如驱动、URL、用户名、密码等)。
- 作用: 将数据库连接信息从配置文件中分离出来,便于管理和维护。
4. 全局设置
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<settings>
: 配置 MyBatis 的全局行为。<setting name="mapUnderscoreToCamelCase" value="true"/>
: 开启下划线命名到驼峰命名的自动映射。mapUnderscoreToCamelCase
: 如果数据库字段名是下划线命名(如user_name
),MyBatis 会自动将其映射为 Java 对象的驼峰命名属性(如userName
)。value="true"
: 表示启用该功能。
- 作用: 简化数据库字段与 Java 对象属性之间的映射。
5. 类型别名
<typeAliases>
<package name="com.ithero.pojo"/>
</typeAliases>
<typeAliases>
: 定义类型别名,简化 SQL 映射文件中的类型引用。<package name="com.ithero.pojo"/>
: 指定一个包名,MyBatis 会自动扫描该包下的所有类,并为每个类生成一个默认的别名。- 例如,
com.ithero.pojo.User
类的别名是User
。
- 例如,
- 作用: 减少 SQL 映射文件中的冗长类名,提高可读性。
6. 环境配置
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<environments>
: 配置 MyBatis 的环境(如开发环境、测试环境、生产环境)。default="development"
: 指定默认的环境是development
。
<environment>
: 定义一个具体的环境。id="development"
: 环境的唯一标识符,这里是development
。<transactionManager type="JDBC"/>
: 配置事务管理器。type="JDBC"
: 使用 JDBC 的事务管理方式,直接依赖数据库的事务管理。
<dataSource type="POOLED">
: 配置数据源。type="POOLED"
: 使用 MyBatis 提供的连接池(PooledDataSource)。<property>
: 配置数据源的属性。driver
: 数据库驱动类名,值从db.properties
中读取。url
: 数据库连接 URL,值从db.properties
中读取。username
: 数据库用户名,值从db.properties
中读取。password
: 数据库密码,值从db.properties
中读取。
- 作用: 配置数据库连接信息和事务管理方式。
7. 映射器配置
<mappers>
<!--<mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
<package name="com.ithero.dao"/>
</mappers>
<mappers>
: 配置 SQL 映射文件或接口。<package name="com.ithero.dao"/>
: 指定一个包名,MyBatis 会自动扫描该包下的所有映射文件或接口。- 例如,
com.ithero.dao.UserMapper.xml
或com.ithero.dao.UserMapper
接口会被自动加载。
- 例如,
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
: (注释掉的配置)用于加载单个 SQL 映射文件。
- 作用: 告诉 MyBatis 去哪里查找 SQL 映射文件或接口。
总结
通过上述配置,这个 MyBatis 核心配置文件完成了以下功能:
- 加载外部属性文件:通过
db.properties
文件管理数据库连接信息。 - 全局设置:开启下划线到驼峰命名的自动映射。
- 类型别名:为
com.ithero.pojo
包下的类生成别名。 - 环境配置:配置开发环境的数据库连接和事务管理。
- 映射器配置:扫描
com.ithero.dao
包下的 SQL 映射文件或接口。