mybatis核心配置文件详解

本文详细介绍MyBatis核心配置信息,包括properties、settings、typeAliases等关键配置项的作用及使用方法,帮助开发者掌握MyBatis配置技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis核心配置信息必须严格按照格式标准进行配置

配置名称配置含义配置简介
configuration包裹所有配置文件整个配置文件的顶级标签
properties属性该标签可以引入外部配置的属性,也可以自己配置。该配置标签所在的同一个配置文件均可引用此配置中的属性
setting全局配置参数用来配置一些改变运行时行为的信息,例如是否使用缓存机制,是否使用延迟加载,是否使用错误机制等。并且可以设置最大并发请求数量、最大并发事务数量,以及是否启动命名空间等
typeAliases类型别名用来设置一些别名来代替Java的长类型声明(如java.lang.int变成int),减少配置编码的冗余
typeHandlers类型处理器将SQL中返回的数据库类型转换成相应Java类型的处理器配置
objectFactory对象工厂实例化目标类的工厂类配置
plugins插件可以通过插件修改Mybatis的核心行为,例如对语句执行的某一点进行拦截调用
environments环境集合属性变量数据库环境信息的集合。在一个配置文件中,可以有多种数据库环境集合,这样可以使Mybatis将SQL同时映射至多个数据库
environment环境子属性对象数据库环境配置的详细配置
transactionManager事务管理指定Mybatis的事务管理器
dataSource数据源使用其中的type指定数据源的连接类型,在标签对中可以使用property属性指定数据库连接池的其他信息
mappers映射器配置SQL映射文件的位置,告知MyBatis去哪里加载SQL映射配置
<?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>
  	<!-- 1.properties属性引入外部配置文件 -->
  	<properties resource="com/mybatis/example/config.properties">
  		<!-- property里面的属性全局均可使用 -->
  		<property name="username" value="root"/>
  		<property name="pasword" value="123"/>
  	</properties>
  	<!--2. 全局配置参数 -->
  	<settings>
  		<!-- 设置是否启动缓存 -->
  		<setting name="cacheEnabled" value="true"/>
  		<!-- 设置是否启用懒加载 -->
  		<setting name="lazyLoadingEnabled" value="true"/>
  	</settings>
  	<!-- 3.别名设置 -->
  	<typeAliases>
  		<typeAlias type="com.mybatis.domain.User" alias="user"/>
  		<typeAlias type="com.mybatis.domain.Customer" alias="customer"/>
  	</typeAliases>
  	<!-- 4.类型转换器 -->
  	<typeHandlers>
  		<!-- 一个简单类型转换器 -->
  		<typeHandler handler="com.mybatis.example.ExampleTypeHandler"/>
  	</typeHandlers>
  	<!-- 5.对象工厂 -->
  	<objectFactory type="com.mybatis.example.ExampleObjectFactory">
  		<!-- 对象工厂注入的参数 -->
  		<property name="someProperty" value="100"/>
  	</objectFactory>
  	<!-- 6.插件 -->
  	<plugins>
  		<plugin interceptor="com.mybatis.example.ExamplePlugin">
  			<property name="someProperty" value="100"/>
  		</plugin>
  	</plugins>
  	<!-- 7.environments数据库环境配置 -->
  	<!-- 和Spring整合后environments配置将配废除 -->
  	<environments default="development">
  		<environment id="development">
  			<!-- 使用JDBC事务管理 -->
  			<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>
  	
  	<!-- 8.加载映射文件 -->
  	<mappers>
  		<mapper resource="com/mybatis/mapper/UserMapper.xml" />
  		<mapper resource="com/mybatis/mapper/CustomerMapper.xml" />
  	</mappers>
  </configuration>

各个配置参数的详解:
properties参数用来引入一个外部属性文件:
引入一个config.properties文件

<!-- 1.properties属性引入外部配置文件 -->
<properties resource="com/mybatis/example/config.properties">
	<!-- property里面的属性全局均可使用 -->
	<property name="username" value="root"/>
	<property name="pasword" value="123"/>
</properties>

config.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///ssm
username=root
password=123

properties标签引入它避免了数据库信息的“硬编码”,当需要连接其他数据库的时候,只需要连接其他数据库时,只需要更改数据库的配置文件即可。
当propertieszhong you property子标签时,并且子标签配置了引的属性文件的属性值,这时取的就是property子标签中的value值。
在properties变迁中引入的配置文件信息以及property子标签中的配置的信息,在其他标签中可以使用"&quot;占位符的方式来获取,在&quot;{}&quot;占位符的方式来获取,在&quot;""{}"中填写引入的配置文件中参数的name或者property子标签的name。
例如:

<dataSource type="POOLED">
	<property name="driver" value="${driver}"/>
	<property name="url" value="${url}"/>
	<property name="username" value="${username}"/>
	<property name="password" value="${password}"/>
</dataSource>

setting配置影响Mybatis框架在运行时的一些行为,在这就不详细介绍了,只需大致了解setting中包含了哪些设置,然后在需要用的时候,查看setting的文档即可。
setting配置常用来实现缓存、延迟加载和分页设置。
Setting配置的样例:
https://blog.youkuaiyun.com/qq_37745636/article/details/98953127

typeAliases配置
在MyBatis的SQL映射配置文件中,常使用parameterType、resultType之类的参数设置SQL语句的输入/输出参数,一般参数都是一个java类型的数据,有基本数据类型或引用数据类型,单数一般都要声明该类型的全路径名称,例如“java.lang.String”、“com.mybatis.domain.User”。
通过在typeAliases配置中声明该类的全路径名称,然后给它一个别名,在SQL映射配置文件中指定输入/输出参数类型时使用别名。

<typeAliases>
	<typeAlias type="com.mybatis.domain.User" alias="user"/>
	<typeAlias type="com.mybatis.domain.Customer" alias="customer"/>
</typeAliases>

MyBatis还提供了批量定义别名的方法,指定包名即可,程序会为该包下的所有包装类加上别名。定义别名的规范就是对应包装类的类名首字母变成小写。

<typeAliases>
	<package name="com.mybatis.domain" />
</typeAliases>

还可以通过注解的方式来实现

@Alias("user")
public class User {
}

Mybatis已经为Java的常见类型默认指定了别名,可以直接使用。

别名映射的类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringjava.lang.String
bytejava.lang.Byte
longjava.lang.Long
shortjava.lang.Short
intjava.lang.Integer
integerjava.lang.Integer
doublejava.lang.Double
booleanjava.lang.Boolean
datejava.util.Date
decimaljava.math.BigDecimal
bigdecimaljava.math.BigDecimal
objectjava.lang.Object
mapjava.util.Map
hashmapjava.util.HashMap
listjava.util.List
arraylistjava.util.ArrayList
collectionjava.util.Collection
iteratorjava.util.Iterator

可以从上面发现规律: 基本数据类型的别名是“_”加上基本数据类型的名称,引用数据类型的别名是数据类型的名称首字母小写。
建议:在实体类中定义属性时尽量使用引用数据类型。
在返回值是个List集合的时候,ResultType中还是写返回的list集合中对象的别名。

environments配置环境

<!-- 7.environments数据库环境配置 -->
<!-- 和Spring整合后environments配置将配废除 -->
<environments default="development">
<environment id="development">
	<!-- 使用JDBC事务管理 -->
	<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中的default属性配置默认的环境,而environment中的id则是这个环境的id。
数据管理器(transactionManager)有两种类型:分别是JDBC和MANAGED。配置为JDBC,相当于直接使用JDBC的提交和回滚设置。配置为MANAGED,则不提交和回滚连接,而是有容器来管理事务的生命周期。
关于数据源(dataSource),在mybatis中有三种内建的数据源类型:分别是“UNPOOLED”、“POOLED”,与“JNDI”。其中UNPLOOED设置每次请求时打开和关闭连接,而POOLED可以设置一个管理数据库连接的资源池,用来合理控制数据库的连接与关闭次数,利用“池”的概念将JDBC连接对象组织起来。而JNDI则配置连接外部数据源的信息。

mappers配置分析
mappers标签下有多个mapper标签,每一个mapper标签中配置的都是一个独立的Mapper映射配置文件的路径。有以下几种配置方式:
第一种,使用相对路径进行配置:

<mappers>
	<mapper resource="com/mybatis/mappers/UserMapper.xml" />
</mappers>

第二种,使用绝对路径进行配置:

<mappers>
	<mapper url="file:///var/mappers/UserMapper.xml" />
</mappers>

第三种,使用接口信息进行配置:

<mappers>
	<mapper class="com.mybatis.mappers.UserMapper" />
</mappers>

第四种,使用接口所在包进行配置:

<mappers>
	<mapper class="com.mybatis.mappers" />
</mappers>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值