核心配置文件详解
上篇博客我们利用MyBatis实现了一个直接添加数据到数据库的操作,期间我们创建了mybatis.xml配置文件,这篇我们就围绕Mybatis配置文件进行讲解。
MyBatis的固定标签配置顺序
- properties:用于定义属性配置,可以在配置文件中引用这些属性。属性可以通过外部文件加载或直接在配置文件中定义。示例代码如下
<properties resource="jdbc.properties">
<property name="driver" value="${jdbc.driver}"/>
<!--设置连接数据库的连接地址-->
<property name="url" value="${jdbc.url}"/>
<!--设置连接数据库的用户名-->
<property name="username" value="${jdbc.username}"/>
<!--设置连接数据库的密码-->
<property name="password" value="${jdbc.password}"/>
</properties>
jdbc.properties
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=123456
- settings:用于配置MyBatis的全局设置,包括缓存、懒加载、日志等。示例代码如下:
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="logImpl" value="LOG4J"/>
</settings>
- typeAliases:用于定义类型别名,简化映射文件中的类型引用。可以指定Java类的别名或指定包下的所有类的别名。示例代码如下:
<typeAliases>
<typeAlias type="com.example.User" alias="User"/>
<package name="com.example.model"/>
</typeAliases>
- typeHandlers:用于自定义类型处理器,用于处理Java类型与数据库类型之间的转换。示例代码如下:
<typeHandlers>
<typeHandler handler="com.example.MyTypeHandler"/>
</typeHandlers>
- objectFactory:用于创建结果对象的工厂类,可以自定义对象的创建逻辑。示例代码如下:
<objectFactory type="com.example.MyObjectFactory"/>
- objectWrapperFactory:用于创建对象包装器的工厂类,可以自定义对象包装器的创建逻辑。示例代码如下:
<objectWrapperFactory type="com.example.MyObjectWrapperFactory"/>
- reflectorFactory:用于创建反射器的工厂类,可以自定义反射器的创建逻辑。示例代码如下:
<reflectorFactory type="com.example.MyReflectorFactory"/>
- plugins:用于配置插件,可以在MyBatis执行过程中拦截方法调用并添加额外的逻辑。示例代码如下:
<plugins>
<plugin interceptor="com.example.MyPlugin">
<property name="property1" value="value1"/>
<property name="property2" value="value2"/>
</plugin>
</plugins>
- environments:用于配置数据库连接环境,包括事务管理器和数据源的配置。示例代码如下:
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</dataSource>
</environment>
</environments>
- databaseIdProvider:用于根据数据库厂商标识选择不同的SQL语句。示例代码如下:
<databaseIdProvider type="DB_VENDOR">
<property name="Oracle" value="oracle"/>
<property name="MySQL" value="mysql"/>
</databaseIdProvider>
- mappers:用于配置映射文件或映射接口。可以通过resource属性指定映射文件的路径,或者通过class属性指定映射接口的类名。示例代码如下:
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
<mapper class="com.example.mapper.OrderMapper"/>
</mappers>
后续我们将以下面的xml配置文件进行对数据库的操作。
<?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">
<!--configuration:根标签,包含整个配置文件的内容。-->
<configuration>
<!--
MyBatis核心配置文件中,标签的顺序:
properties?,settings?,typeAliases?,typeHandlers?,
objectFactory?,objectWrapperFactory?,reflectorFactory?,
plugins?,environments?,databaseIdProvider?,mappers?
-->
<!--引入properties文件-->
<properties resource="jdbc.properties" />
<!--设置类型别名-->
<typeAliases>
<!--
typeAlias:设置某个类型的别名
属性:
type:设置需要设置别名的类型
alias:设置某个类型的别名,若不设置该属性,那么该类型拥有默认的别名,即类名且不区分大小写
-->
<!--<typeAlias type="com.atguigu.mybatis.pojo.User"></typeAlias>-->
<!--以包为单位,将包下所有的类型设置默认的类型别名,即类名且不区分大小写-->
<package name="com.miaow.mybatis.pojo"/>
</typeAliases>
<!--
environments:配置多个连接数据库的环境
属性:
default:设置默认使用的环境的id
environments:配置数据库连接环境,可以配置多个环境,例如开发环境、测试环境、生产环境等。
-->
<environments default="development">
<!--
environment:指定一个具体的数据库连接环境,包括事务管理器和数据源的配置。
属性:
id:表示连接数据库的环境的唯一标识,不能重复
-->
<environment id="development">
<!--
transactionManager:设置事务管理方式
属性:
type="JDBC|MANAGED"
JDBC:表示当前环境中,执行SQL时,使用的是JDBC中原生的事务管理方式,事务的提交或回滚需要手动处理
MANAGED:被管理,例如Spring
-->
<transactionManager type="JDBC"/>
<!--
dataSource:配置数据源
属性:
type:设置数据源的类型
type="POOLED|UNPOOLED|JNDI"
POOLED:表示使用数据库连接池缓存数据库连接
UNPOOLED:表示不使用数据库连接池
JNDI:表示使用上下文中的数据源
-->
<dataSource type="POOLED">
<!--设置连接数据库的驱动-->
<property name="driver" value="${jdbc.driver}"/>
<!--设置连接数据库的连接地址-->
<property name="url" value="${jdbc.url}"/>
<!--设置连接数据库的用户名-->
<property name="username" value="${jdbc.username}"/>
<!--设置连接数据库的密码-->
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url"value="jdbc:mysql://localhost:3306/test?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--引入映射文件-->
<mappers>
<!--<mapper resource="mappers/UserMapper.xml"/>-->
<!--
以包为单位引入映射文件
要求:
1、mapper接口所在的包要和映射文件所在的包一致
2、mapper接口要和映射文件的名字一致
-->
<package name="com.miaow.mybatis.mapper"/>
</mappers>
</configuration>