MyBatis配置文件mybatis-config配置详解-MyBatis从入门到进阶系列
1. 定义
MyBatis的配置文件是一个XML文件,其默认名称为mybatis-config.xml,用于配置和定制化MyBatis的运行时行为。比如可以用于配置数据库连接、属性、类型别名、类型处理器、插件、环境配置、映射器(mapper.xml)等信息。
2. 配置概述
2.1. 主要包括以下部分
configuration元素:整个配置文件的根元素,包含多个子元素;
properties元素:用于配置属性,可以通过${}占位符引用属性值;
settings元素:用于配置MyBatis的全局设置,如缓存策略、延迟加载等;
typeAliases元素:用于配置类型别名,可以将Java类的全限定名映射成简短的别名,方便在XML文件中使用;
typeHandlers元素:用于配置类型处理器,可以将Java对象和数据库中的数据进行转换;
environments元素:用于配置环境,包括数据源和事务管理器;
mappers元素:用于配置Mapper接口,包括XML映射文件和注解方式的映射;
plugins元素:用于配置插件,可以在执行SQL语句前后进行一些自定义操作。
2.2. MyBatis配置文件示例
<?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>
<properties resource="db.properties" />
<typeAliases>
<typeAlias type="com.example.User" alias="User" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<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>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml" />
</mappers>
</configuration>
其中,properties元素引用了db.properties文件中的属性值。typeAliases元素将com.example.User映射成了User别名。environments元素配置了开发环境的数据源和事务管理器。mappers元素引用了UserMapper.xml映射文件。
3. 配置详解
3.1. properties元素的详细配置
properties元素用于配置属性,可以通过${}占位符引用属性值。properties元素支持多种配置方式,包括properties子元素、properties文件等。其中,db.properties文件包含jdbc.driver、jdbc.url、jdbc.username、jdbc.password属性值。
<properties resource="db.properties" />
<properties>
<property name="jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="jdbc.url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="jdbc.username" value="root" />
<property name="jdbc.password" value="123456" />
</properties>
3.1.1.属性配置
MyBatis的属性配置是一个properties文件,用于存储一些全局的配置参数。这些参数可以在MyBatis的配置文件中通过${key}的方式进行引用。在MyBatis中,属性配置文件的命名通常为mybatis.properties,位于类路径的根目录下,也可以通过在mybatis-config.xml中配置来指定属性配置文件的路径。属性配置文件的基本结构如下:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=123456
其中,jdbc.driver、jdbc.url、jdbc.username、jdbc.password是全局的配置参数,可以在MyBatis的配置文件中进行引用。
3.2. typeAliases元素的详细配置
typeAliases元素用于配置类型别名,可以将Java类的全限定名映射成简短的别名,方便在XML文件中使用。typeAliases元素支持多种配置方式,包括typeAlias元素、package元素等。
<typeAliases>
<typeAlias type="com.example.User" alias="User" />
<package name="com.example.pojo" />
</typeAliases>
3.3. environments元素的详细配置
environments元素用于配置环境,包括数据源和事务管理器。environments元素可以配置多个环境,其中一个环境可以被指定为默认环境。每个环境包含一个transactionManager元素和一个dataSource元素。例如:
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<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="production">
<transactionManager type="JDBC" />
<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>
</environments>
3.4. transactionManager元素
用于配置事务管理器,其中,type属性用于指定事务管理器的类型,包括JDBC和MANAGED两种类型。JDBC类型的事务管理器需要由应用程序自己处理事务的提交和回滚,而MANAGED类型的事务管理器则是由应用服务器来管理事务的提交和回滚。 在transactionManager元素中,可以使用property元素来设置其他相关属性。例如,可以设置事务的隔离级别、超时时间等。具体的属性设置可以参考MyBatis的官方文档。
<transactionManager
type="[JDBC | MANAGED]"> <property name="..." value="..."/>
</transactionManager>
3.5. objectFactory元素的配置
objectFactory元素用于配置对象工厂,可以自定义对象的创建方式。其中,MyObjectFactory是自定义的对象工厂类,property1和property2是对象工厂类的属性。
<objectFactory type="com.example.MyObjectFactory">
<property name="property1" value="value1" />
<property name="property2" value="value2" />
</objectFactory>
3.6. databaseIdProvider元素的配置
databaseIdProvider元素用于配置数据库厂商标识符,可以根据不同的数据库类型执行不同的SQL语句。其中,DB_VENDOR表示根据数据库厂商标识符进行匹配,Oracle和MySQL分别为两个数据库的标识符。
<databaseIdProvider type="DB_VENDOR">
<property name="Oracle" value="oracle" />
<property name="MySQL" value="mysql" />
</databaseIdProvider>
3.7. bind元素的详细配置
bind元素用于绑定参数,可以在SQL使用#{name,javaType=int,jdbcType=INTEGER}
方式引用绑定参数的值。其中,#{age,javaType=int,jdbcType=INTEGER}表示引用绑定参数age的值,javaType表示参数的Java类型,jdbcType表示参数的JDBC类型
<select id="getUser" resultType="com.example.User">
<bind name="age" value="'20'" />
SELECT * FROM user WHERE age = #{age,javaType=int,jdbcType=INTEGER}
</select>
3.8. typeHandler元素的详细配置
typeHandler元素用于配置类型处理器,可以将Java对象和数据库中的数据进行转换。typeHandler元素支持多种配置方式,包括class属性、javaType和jdbcType属性、handler属性等。例如:
<typeHandlers>
<typeHandler handler="com.example.MyTypeHandler"
javaType="java.lang.String" jdbcType="VARCHAR" />
</typeHandlers>
3.9. settings元素的详细配置
settings元素用于配置MyBatis的全局设置,如缓存策略、延迟加载等。settings元素包含多个子元素,如cacheEnabled、lazyLoadingEnabled、logImpl等。例如:
<settings>
<setting name="cacheEnabled" value="true" />
<setting name="lazyLoadingEnabled" value="true" />
<setting name="logImpl" value="LOG4J2" />
</settings>
3.10. plugins元素的详细配置
plugins元素用于配置插件,可以在执行SQL语句前后进行一些自定义操作。plugins元素包含多个子元素,每个子元素包含一个interceptor元素和一个property元素。其中,MyPlugin是自定义的插件类,property1和property2是插件类的属性:
<plugins>
<plugin interceptor="com.example.MyPlugin">
<property name="property1" value="value1" />
<property name="property2" value="value2" />
</plugin>
</plugins>
3.11. mappers元素的详细配置
mappers元素用于配置Mapper接口,包括XML映射文件和注解方式的映射。mappers元素支持多种配置方式,包括resource属性(引用XML映射文件)、class属性(引用Mapper接口)、package属性(扫描指定包下的所有Mapper接口)等。例如:
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml" />
<mapper class="com.example.mapper.OrderMapper" />
<package name="com.example.mapper" />
</mappers>
3.11.1. 映射文件
MyBatis的映射文件是一个XML文件,用于配置SQL语句和结果映射规则。它将Java的POJO对象和数据库中的表进行映射,提供了CRUD操作的SQL语句和参数映射。在MyBatis中,映射文件的命名通常为Mapper.xml,位于类路径的某个目录下。映射文件的基本结构如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<!-- resultMap元素用于配置结果映射规则 -->
<resultMap id="userMap" type="com.example.User">
<id column="id" property="id" />
<result column="name" property="name" />
<result column="age" property="age" />
</resultMap>
<!-- select元素用于配置查询语句 -->
<select id="getUser" resultMap="userMap">
SELECT * FROM user WHERE id = #{id}
</select>
<!-- insert元素用于配置插入语句 -->
<insert id="addUser" parameterType="com.example.User">
INSERT INTO user(name, age) VALUES(#{name}, #{age})
</insert>
<!-- update元素用于配置更新语句 -->
<update id="updateUser" parameterType="com.example.User">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
<!-- delete元素用于配置删除语句 -->
<delete id="deleteUser" parameterType="int">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>
其中,resultMap元素用于配置结果映射规则;select元素用于配置查询语句;insert元素用于配置插入语句;update元素用于配置更新语句;delete元素用于配置删除语句。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步