<properties>标签
可以用来获取外部properties配置文件的信息
driver:com.mysql.jdbc.Driver
url:jdbc:mysql:///JDBC
username:root
password:root
<!-- 加载配置文件dbconfig.properties-->
<properties resource="dbconfig.properties"> </properties>
<environments default="development">
<environment id="development">
<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>
<settings>标签
包含很多重要的设置项,setting用来设置每一个设置项,name用来设置项名,value用来设置想取值。
<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="autoMappingUnknownColumnBehavior" value="WARNING"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25"/>
<setting name="defaultFetchSize" value="100"/>
<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>
<typeAliases>标签
别名处理器,可以为java类型起别名
<typeAliases>
<!-- 为某个类起别名-->
<typeAlias type="Util.User" alias="user"></typeAlias>
<!-- 给某个包下的所有类批量起别名(默认别名 类名的小写)-->
<package name="Util"/>
</typeAliases>
注意:在进行批量取别名时可能出现一个问题,就是该包下的子包也存在一个类名和该包下的类名相同,此时就会出现别名冲突的错误,这时我们可以用注解对冲突的类名进行重命名。
使用注解进行重命名
package Util.Test;
import org.apache.ibatis.type.Alias;
@Alias("use")
public class user {
}
<environments>标签
配置环境,mybatis可以配置多种环境,default可以指定使用某种环境。environment用来配置一个具体的环境,id 代表当前环境的唯一标识。transactionManager事务管理器,里面的type选择事务管理器的类型一般有两种分别为JDBC和MANAGED;dataSource数据源,里面的type有三个选项分别是UNPOOLED,不使用连接池,POOLED,使用连接池;JNDI。
<environments default="test">
<environment id="development">
<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>
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="UNPOOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<databaseIDProvider>标签
支持多种数据库厂商,在MyBatisXML配置文件里面配置不同数据库的别名,然后再Mapper文件中配置databaseID的属性使其能够在不同数据库进行查询。
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
</databaseIdProvider>
<Mappers>标签
将sql映射注册到全局配置中,每个mapper标签就是注册一个mapper映射。resource引用类路径下的文件;url引用网络路径下的文件。class属性注册接口,必须有sql映射文件且映射文件名必须和接口同名且在同一路径下,也可以基于注解进程查询。 package将包内的映射器接口实现全部注册为映射器。
<!-- 使用相对于类路径的资源引用 -->
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/BlogMapper.xml"/>
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
<!-- 使用完全限定资源定位符(URL) -->
<mappers>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
<mapper url="file:///var/mappers/BlogMapper.xml"/>
<mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
<mapper class="org.mybatis.builder.AuthorMapper"/>
<mapper class="org.mybatis.builder.BlogMapper"/>
<mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
<package name="org.mybatis.builder"/>
</mappers>
注意:标签的编辑是有顺序的,其顺序为(properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)依次递减。