一、配置总览
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