深入解析 MyBatis 核心配置文件
深入解析 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 映射文件或接口。
浙公网安备 33010602011771号