MyBatis是一种基于Java的持久化框架,它可以将Java对象映射到关系型数据库中,并提供了一系列强大的特性和工具,帮助开发人员轻松地编写高效、可靠的数据库访问代码。在使用MyBatis时,我们需要创建一个核心配置文件,用于描述MyBatis的全局设置和属性。
基本配置
在创建MyBatis的核心配置文件时,我们首先需要配置一些基本信息,例如数据源、事务管理器等。这些信息可以通过在配置文件中添加<environment>元素来进行配置。一个典型的<environment>元素包含一个id属性和一个<transactionManager>元素和<dataSource>元素,如下所示:
代码语言:javascript复制<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
在上面的配置中,我们定义了一个名为"development"的环境,并指定了一个JDBC事务管理器和一个POOLED数据源。其中,<dataSource>元素中的<property>子元素用于指定数据源的驱动、URL、用户名和密码。注意,这些属性的值可以从配置文件外部引入,例如通过Spring的PropertyPlaceholderConfigurer。
映射器配置
除了基本配置外,我们还需要配置MyBatis的映射器,用于描述如何将Java对象映射到SQL语句中。在MyBatis中,映射器通常使用Mapper接口和Mapper XML文件来描述。我们可以通过在配置文件中添加<mappers>元素来配置映射器。一个典型的<mappers>元素包含多个<mapper>元素,如下所示:
代码语言:javascript复制<mappers>
<mapper resource="com/example/UserMapper.xml"/>
<mapper class="com.example.OrderMapper"/>
</mappers>
在上面的配置中,我们配置了两个映射器:一个是通过资源路径引入的UserMapper.xml文件,另一个是通过Java类引入的OrderMapper接口。注意,如果映射器文件和Java类在同一个包下,我们可以使用相对路径来引入映射器文件。
其他配置
除了基本配置和映射器配置外,MyBatis还提供了一些其他的配置选项,例如缓存配置、插件配置、日志配置等。我们可以通过在配置文件中添加<cache>元素、<plugins>元素和<settings>元素来进行配置。一个典型的<settings>元素包含多个子元素,如下所示:
代码语言:javascript复制<settings>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="jdbcTypeForNull" value="NULL"/>
<setting name="cacheEnabled" value="true"/>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
在上面的配置中,我们启用了延迟加载、将空值映射为NULL、启用了缓存和将日志输出到控制台。
核心配置文件示例
下面是一个完整的MyBatis核心配置文件的示例,其中包含了基本配置、映射器配置和其他配置选项:
代码语言:javascript复制<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/UserMapper.xml"/>
<mapper class="com.example.OrderMapper"/>
</mappers>
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="jdbcTypeForNull" value="NULL"/>
<setting name="cacheEnabled" value="true"/>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
</configuration>
在上面的示例中,我们首先定义了一个名为"development"的环境,并指定了一个JDBC事务管理器和一个POOLED数据源。然后,我们定义了两个映射器,一个是通过资源路径引入的UserMapper.xml文件,另一个是通过Java类引入的OrderMapper接口。最后,我们启用了延迟加载、将空值映射为NULL、启用了缓存和将日志输出到控制台。