MyBatis全局配置文件介绍

一、properties

properties标签可以用于引入外部的配置文件,也可以用于定义全局变量。
比如我们在配置数据源的时候习惯把相关的信息单独的放在一个配置文件中,方便修改。

数据库配置信息dbconfig.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis-study
jdbc.username=root
jdbc.password=1234

在全局配置文件mybatis-config.xml中通过使用properties标签引用dbconfig.properties

<configuration>
    <!-- 
        properties 中提供了两个属性,分别是resource 和url 
        resource用于引入类路径下的资源
        url 用于引入磁盘或者网络路径中的资源
     -->
    <properties resource="dbconfig.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>
</configuration>

二、settings

settings标签用于改变 MyBatis 的运行时行为。
部分配置实例如下:

    <settings>
        <!-- 配置影响的所有映射器中配置的缓存的全局开关,默认是true -->
        <setting name="cacheEnabled" value="true"/>
        <!-- 懒加载的全局开关,默认是false -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!-- 
            是否开启驼峰命名规则映射,默认是false
            比如数据库某个字段为user_name,设置为true,可以映射到javabean 中的userName字段
         -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

三、typeAliases

typeAliases可以为javabean 起别名。
比如我们在SQL 映射文件中写SQL 语句时,返回的结果类型可能是某个javabean 类型,这时候为了方便,我们就可以为这个javabean 设置一个简单的别名。注意配置的顺序,typeAliases要配置在settings后面。

<typeAliases>
        <!-- typeAlias 为某个javabean 起别名,type 为对应的全路径名,alias 为设置到额别名,不设置alias 默认是类名小写  -->
        <!--<typeAlias type="com.jas.mybatis.bean.Employee" alias="employee"/>-->

        <!-- 批量起别名,那么为javabean 所在的包,默认的别名是类名小写 -->
        <package name="com.jas.mybatis.bean"/>
    </typeAliases>

SQL 映射文件

    <!-- 设置了别名以后,resultType 返回值类型就可以使用别名了 -->
    <select id="getEmpById" resultType="Employee">
        select * from t_employee where id = #{id}
    </select>

四、typeHandlers

typeHandlers类型处理器,不管MyBatis 在预处理语句(PreparedStatement)中设置一个参数,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。

比如数据库中的VARCHAR类型,会被转换成Java 中的java.lang.String,其类型处理器是StringTypeHandler。这个标签通常不必设置,MyBatis 对大部分常用的数据类型都进行了转换。

五、objectFactory

MyBatis 每次创建结果对象的新实例时,都会使用一个对象工厂(ObjectFactory)实例来完成。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。这个标签一般不需要作其他配置。

六、plugins

MyBatis 允许你对已经映射的SQL 语句在执行过程中可以对某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用主要有四个:

Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
ParameterHandler (getParameterObject, setParameters)
ResultSetHandler (handleResultSets, handleOutputParameters)
StatementHandler (prepare, parameterize, batch, update, query)

这些方法的使用会在后续的报文中会作具体的介绍,有兴趣的话可以关注后续的博文。

七、environments

environments允许配置成多种运行环境,比如开发、测试和生产环境,可以在不同的生产环境中分别配置对应的数据库。这种机制有助于将 SQL 映射应用于多种数据库之中。

比如可以在environments中设置两个环境,分别是test 和development。在不同的环境下,可以通过default来指定。

<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>
        <!-- 测试环境 -->
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!-- ...省略一些信息... -->
            </dataSource>
        </environment>
    </environments>

environments下可以设置多个environment,每个environment都必须要有transactionManagerdataSource,否则会报错。

八、databaseIdProvider

设置databaseIdProvider可以让MyBatis 支持不同厂商的数据库,对于多数据库厂商的支持基于SQL 映射文件中的databaseId字段。
比如设置MyBatis 支持三种数据库厂商,需要做如下配置:

<databaseIdProvider type="DB_VENDOR">
  <!-- name 表示数据库厂商的标识,value 表示数据库厂商标识的别名 -->
  <property name="SQL Server" value="sqlserver"/>
  <property name="MySql" value="mysql"/>        
  <property name="Oracle" value="oracle" />
</databaseIdProvider>

在SQL 映射文件中编写SQL 的时候可以通过databaseId字段设置使用的是哪个厂商的数据库。当然如果你要在不同数据库厂商之间进行切换,都需要配置相对应的数据源。

<mapper namespace="com.jas.mybatis.mapper.EmployeeMapper">
    <!-- databaseId="mysql" 表示使用的是MySql ,"mysql" 是上面设置的MySql 的别名 -->
    <select id="getEmpById" resultType="Employee" databaseId="mysql">
        select * from t_employee where id = #{id}
    </select>
</mapper>

九、mappers

mappers用于在全局配置文件中注册SQL 映射文件。mapper标签中提供了三个属性resourceurlclass
resource加载类路径下的SQL映射文件,
url 加载磁盘中或者网络中的映射文件,
class用于注册接口。
配置规则如下:

    <!-- resource="EmployeeMapper.xml" 表示映射文件在类路径下 -->
    <mappers>
        <mapper resource="EmployeeMapper.xml"/>
    </mappers>

十、总结

这些标签的使用顺序是一定的,打乱定义的顺序会报错。

 properties -> settings -> typeAliases -> typeHandlers -> objectFactory -> objectWrapperFactory -> 
 reflectorFactory -> plugins -> environments -> databaseIdProvider -> mappers

这篇博文主要介绍了MyBatis 全局配置文件中一些标签,关于这些标签,只是将其中一些相对重要的用法作了介绍,并没有把标签的全部用法列出来。如果你想更全面了解这些标签的用法,官方文档是一个不可错过的选择。

官方文档链接:http://www.mybatis.org/mybatis-3/zh/configuration.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值