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>
<!-- 定义一些基本属性,下面可以通过${name}的形式引用 -->
<properties>
<property name="username" value="root" />
<property name="password" value="jcw123" />
</properties>
<!-- settingsb中的属性是用来定义Configuration这个核心bean的成员属性的
在执行过程有不同的作用 -->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
<!-- 定义一个类的别名,会放到TypeAliasRegistry这个类的TYPE_ALIASES这个成员的map中 -->
<typeAliases>
<typeAlias type="com.im.sky.mybatis.GenericDao" alias="GenericDao" />
<!-- 可以直接将包下的全路径报名用类的simpleName表示 -->
<package name="com.im.sky.mybatis" />
</typeAliases>
<!-- 会将此信息注册到TypeHandlerRegistry这个类中,当为预处理语句设置参数,或者
从结果集中取出值时,都会用类型处理器将获取的值以合适的方式转为Java类型 -->
<typeHandlers>
<typeHandler handler="com.im.sky.mybatis.handler.ExampleHandler" />
</typeHandlers>
<!-- 创建对象的工厂类, 通过反射创建对应的对象 -->
<objectFactory type="com.im.sky.mybatis.ExampleObjectFactory">
<property name="name" value="selfFactory" />
<property name="val" value="heheda" />
</objectFactory>
<!-- 对象包装类的工厂类 -->
<objectWrapperFactory type="com.im.sky.mybatis.ExampleObjectWrapperFactory" />
<!-- 反射者的创建工厂类,一个反射者会和一个Class对象绑定,进行set、get、成员变量等的解析 -->
<reflectorFactory type="com.im.sky.mybatis.ExampleReflectorFactory" />
<!-- 相当于拦截器,在方法执行的某一点进行拦截调用-->
<plugins>
<plugin interceptor="com.im.sky.mybatis.interceptor.ExamplePlugin">
<property name="name" value="jcw" />
<property name="words" value="2" />
</plugin>
</plugins>
<!-- 数据源的环境配置,这种机制有助于将SQL映射到多种数据库中,可以配置多个环境,创建SqlSessionFactory时传入不同的env可以设置不同的数据源, 关联一个id、一个事务工厂类、一个datasource -->
<environments default="test">
<environment id="test">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/testdb0" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- 设置数据库厂商标识,mybatis可以根据不同的数据库厂商执行不同的语句,这种支持就是基于databaseId属性,其中属性的name标识数据库生产名称,value即表示对应的databaseId -->
<databaseIdProvider type="DB_VENDOR">
<property name="SQL Server" value="sqlserver" />
<property name="DB2" value="db2" />
<property name="Oracle" value="oracle" />
</databaseIdProvider>
<!-- 映射器,定义SQL的映射语句 -->
<mappers>
<mapper resource="mapper/Init.xml" />
</mappers>
</configuration>