飞道的博客

Mybatis框架|Mybatis配置详解

354人阅读  评论(0)


一、配置总览

configuration 说明
properties 属性
settings 全局配置参数
typeAliases 别名
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 运行环境(environment,transactionManager,dataSource)
databaseIdProvider 数据库提供商的唯一标识
mappers (加载我们编写的sql配置文件)

二、各个配置介绍

1.properties

①在properties标签中定义一个property标签,name和value属性作为一个键值对,可以在数据库账号密码配置时,使用OGNL表达式取值符映射。

  • url属性:可以加载网络上或磁盘上的一个配置文件。
  • resource属性:可以加载外部的配置文件。
	<properties url="" resource="">
			<property name="pass" value="Hudie"/>
	</properties>

②还可以使用resource加载外部文件,在外部文件中输入数据库的账号密码等信息。

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=Hudie
<?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">
			
	</properties>
	<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="UserMapper.xml" />
	</mappers>
</configuration>

一个需要注意的问题:Mybatis在读取配置文件的时候,第一步先读取propertis标签里property标签中的信息,第二步读取外部文件xx.propertis中的信息,第三步读取xxMapper.xml中pojo(也就是JavaBean)的信息。如果说第一步property标签中的信息和第三步JavaBean中的数据名相同,就会出现覆盖问题,且此问题不报错, 及难查找。因此建议其变量名时特殊一点,例如上图中的jdbc.xxx

2.settings

settings是Mybatis全局的一些配置,Mybatis中默认会有一些配置,这些默认的配置已经足够我们的使用了,如果真的需要更改,再来进行设置即可。

配置 默认
cacheEnabled(缓存) true
lazyLoadingEnabled(懒加载) true
useGeneratedKeys(主键的生成策略) False
defaultExecutorType(默认执行器的类型) simple
defaultStatementTimeout(默认的Statement超时) NOT Set(null)
jdbcTypeForNull(jdbc类型的映射) OTHER
proxyFactory(代理工厂) CGLIB
<settings>
 <setting name="cacheEnabled" value="true"/>
 <setting name="lazyLoadingEnabled" value="true"/>
 <setting name="multipleResultSetsEnabled" value="true"/>
 <setting name="useColumnLabel" value="true"/>
 <setting name="useGeneratedKeys" value="false"/>
 <setting name="autoMappingBehavior" value="PARTIAL"/>
 <setting name="defaultExecutorType" value="SIMPLE"/>
 <setting name="defaultStatementTimeout" value="25"/>
 <setting name="safeRowBoundsEnabled" value="false"/>
 <setting name="mapUnderscoreToCamelCase" value="false"/>
 <setting name="localCacheScope" value="SESSION"/>
 <setting name="jdbcTypeForNull" value="OTHER"/>
 <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

3.typeAliases

typeAliases可以为单个pojo类起别名,也可以使用package为所有的pojo类起别名,默认的别名为类名本身或类名首字母小写。但这样都不能见名知意,并不推荐这样使用。

	<typeAliases>
		<typeAlias type="com.gql.pojo.UserMapper" alias="u"/>
		<package name="com.gql.pojo"/>
	</typeAliases>

4.typeHandlers

以String类型处理器为例:

Type Handler Java Types JDBC Types
StringTypeHandler java.lang.String CHAR, VARCHAR

将Java中的String类型与数据库中的char和varchar类型进行了对应。

5.mappers(重点)

可以在mapper标签中使用resourse属性指定一个配置文件(例如<mapper resource="UserMapper.xml" />)。还可以像下面的方式,在class的属性中填入接口的全限定名,不过需要满足接口名和sql配置文件同名且同级目录的要求。

	<mappers>
		<!-- 如果使用接口的全限定名,接口名必须和sql配置文件同名且同级目录 -->
		<mapper class="com.gql.mapper.UserMapper"/>
	</mappers>

如果有多个接口,使用批操作,不过也需要满足上面的要求。

	<mappers>
		<!-- 接口名必须和sql配置文件同名且同级目录 -->
		<package name="com.gql.mapper"/> 
	</mappers>

转载:https://blog.csdn.net/weixin_43691058/article/details/104234703
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场