配置详解之properties与environments(mybatis源码篇)

配置详解之properties与environments(mybatis源码篇)

 

  在 mybatis配置文件中,在configuration根节点下面,可配置properties、typeAliases、plugins、 objectFactory、objectWrapperFactory、settings、environments、 databaseIdProvider、typeHandlers、mappers这些节点。那么本次,就会先介绍properties节点和 environments节点。

  为了让大家能够更好地阅读mybatis源码,我先简单的给大家示例一下properties的使用方法。  

1

2

3

4

5

6

7

8

9

10

11

1 <configuration>

 2 <!-- 方法一: 从外部指定properties配置文件, 除了使用resource属性指定外,还可通过url属性指定url 

 3   <properties resource="dbConfig.properties"></properties>

 4   -->

 5   <!-- 方法二: 直接配置为xml -->

 6   <properties>

 7       <property name="driver" value="com.mysql.jdbc.Driver"/>

 8       <property name="url" value="jdbc:mysql://localhost:3306/test1"/>

 9       <property name="username" value="root"/>

10       <property name="password" value="root"/>

11   </properties>

  那么,我要是 两种方法都同时用了,那么哪种方法优先?

  当以上两种方法都xml配置优先,外部指定properties配置其次。至于为什么,接下来的源码分析会提到,请留意一下。

  再看一下envirements元素节点的使用方法吧:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

<environments default="development">

    <environment id="development">

      <transactionManager type="JDBC"/>

      <dataSource type="POOLED">

          <!--

          如果上面没有指定数据库配置的properties文件,那么此处可以这样直接配置

        <property name="driver" value="com.mysql.jdbc.Driver"/>

        <property name="url" value="jdbc:mysql://localhost:3306/test1"/>

        <property name="username" value="root"/>

        <property name="password" value="root"/>

         -->

          

         <!-- 上面指定了数据库配置文件, 配置文件里面也是对应的这四个属性 -->

         <property name="driver" value="${driver}"/>

         <property name="url" value="${url}"/>

         <property name="username" value="${username}"/>

         <property name="password" value="${password}"/>

          

      </dataSource>

    </environment>

     

    <!-- 我再指定一个environment -->

    <environment id="test">

      <transactionManager type="JDBC"/>

      <dataSource type="POOLED">

        <property name="driver" value="com.mysql.jdbc.Driver"/>

        <!-- 与上面的url不一样 -->

        <property name="url" value="jdbc:mysql://localhost:3306/demo"/>

        <property name="username" value="root"/>

        <property name="password" value="root"/>

      </dataSource>

    </environment>

     

  </environments>

  environments元素节点可以配置多个environment子节点, 怎么理解呢? 

  假如我们系统的开发环境和正式环境所用的数据库不一样(这是肯定的),那么可以设置两个environment, 两个id分别对应开发环境(dev)和正式环境(final),那么通过配置environments的default属性就能选择对应的 environment了, 例如,我将environments的deault属性的值配置为dev, 那么就会选择dev的environment。 至于这个是怎么实现的, 下面源码就会讲。

 

你可能感兴趣的:(配置详解之properties与environments(mybatis源码篇))