Mybatis进阶
1. 核心配置文件 (configuration)
MyBatis 的核心配置文件,通常命名为 mybatis-config.xml,是 MyBatis 初始化时加载的主配置文件。它包含了配置 MyBatis 行为的设置和属性信息。
包含一下内容:
configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
eg:常见如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--核心配置文件--><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><mappers><mapper resource="mapper/UserMapper.xml"></mapper></mappers>
</configuration>
2. 环境配置 (environments)
环境配置允许 MyBatis 配置成适应多种环境,如开发环境、测试环境和生产环境。虽然可以配置多个环境(注意default和id,实现绑定环境主要看default绑定哪套id),但每个 SqlSessionFactory 实例只能选择一种环境。
<!-- 2. 环境配置:默认使用 development -->
<environments default="development"><environment id="development"><!-- 事务管理器 --><transactionManager type="JDBC"/><!-- 数据源:POOLED 连接池 --><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>
default:指定默认的环境 ID。
environment:每个 environment 元素定义一个环境配置。
- id:环境的唯一标识。
- transactionManager:事务管理器配置,type="JDBC" 使用 JDBC 的事务管理。
- dataSource:数据源配置,type="POOLED" 使用 MyBatis 内置的连接池。
3. 属性 (properties)
属性配置用于引入外部配置文件,使得数据库连接等配置信息可以外部化,便于维护和切换环境。
db.propreties
driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username = root
password = WPS5518836wps
<!-- 3. 属性:引入外部 db.properties,同名 key 以 db.properties 为准 -->
<properties resource="db.properties"><!-- 可在此处补充默认属性 --><property name="username" value="root"/><property name="password" value="11111"/>
</properties>
- resource:指定外部属性文件的位置。
- 内部的 <property> 可用于提供默认值或覆盖外部文件中的属性,倘若是默认值和外部文件中的属性共有的文件,则以默认值优先。
4. 类型别名 (typeAliases)
类型别名用于为 Java 类型设置一个短的名字,减少类完全限定名的冗余。
<!-- 4. 类型别名:给实体类起短名 -->
<typeAliases><!-- 单个类 --><!-- <typeAlias type="com.example.pojo.User" alias="User"/> --><!-- 扫描整个包:默认别名 = 类名首字母小写 --><package name="com.example.pojo"/>
</typeAliases>
- <typeAlias>:为单个类指定别名。
- <package>:扫描包下的所有类,并自动生成别名,别名默认为类名(首字母小写)。
5. 设置 (settings)
设置提供了一些 MyBatis 的全局配置选项,影响 MyBatis 的运行行为。
<!-- 5. 设置:常用全局行为 -->
<settings><!-- 日志实现 --><setting name="logImpl" value="STDOUT_LOGGING"/><!-- 开启二级缓存 --><setting name="cacheEnabled" value="true"/><!-- 开启驼峰命名自动映射 --><setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
常见的设置选项包括:
- logImpl:指定日志实现。
- cacheEnabled:是否开启二级缓存。
- mapUnderscoreToCamelCase:是否开启驼峰命名自动映射。
6. 映射器 (mappers)
映射器配置用于注册所有的 Mapper 文件或接口,使得 MyBatis 能够找到并加载 SQL 映射。
<!-- 6. 映射器:注册所有 Mapper.xml 或接口 -->
<mappers><!-- 1) 类路径方式 --><mapper resource="mapper/UserMapper.xml"/><!-- 2) 扫描整个包(接口+注解) --><!-- <package name="com.example.mapper"/> -->
</mappers>
- <mapper>:通过资源路径或类名注册单个 Mapper 文件或接口。
- <package>:扫描包下的所有 Mapper 接口,并自动注册。