【Mybatis】mybatis-config.xml 引入外部配置 db-properties

Mybatis mybatis-config.xml 引入外部配置properties

程序特点:

  • 纯Java-Mybatis应用(.jar),使用批处理(.bat)启动。

目的目标:

  • 为了程序的便利性,将 db-properties 提取至与 .jar 文件平级的目录下,这样对于不同的使用场景(连接不同DB时),无需修改 .jar文中的任何内容,只需要修改 db-properties中的配置信息即可。

实现方式:

  • 1、 将 db-properties 提取至与 .jar 文件平级的目录下。db-properties内容:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/hr?serverTimezone=GMT
jdbc.username=root
jdbc.password=root
  • 2、 mybatis-config.xml中加上以下内容。
<!-- ... -->
	<!-- 引入与jar包同级的配置文件 -->
	<properties url="file:./db.properties" />
	<!-- 数据库环境 -->
    <environments default="prod">
        <environment id="prod">
            <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>
<!-- ... -->

说明:

  • url="file:./db.properties"

程序会从当前.jar文件的同级目录中引入db.properties文件。
file: 必须写。在windows环境下的一些特定的场合可以省略(不推荐)。

  • <properties/> 有两个属性: resource (相对路径) 和 url (绝对路径) 。例:
<properties resource="config/db.properties"/>
<properties url="file:///D:/projects//config//db.properties"/>

小提示

可在 project 根目录下创建一个template文件夹,存放类似db-properties的文件,为使用者提供标准的配置模板,具体配置的值由使用者自行配置。

其他实现方式:

当然,Mybatis还支持其他方式引入。以下引入官方说明:可以在 SqlSessionFactoryBuilder.build() 方法中传入属性值。例如:

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, props);
// ... 或者 ...
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, props);

Mybatis加载顺序:

如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:

  • 首先读取在 properties 元素体内指定的属性。
  • 然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
  • 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。

因此,通过方法参数传递的属性具有最高优先级,resource / url 属性中指定的配置文件次之,最低优先级的则是 properties 元素中指定的属性。

从 MyBatis 3.4.2 开始,你可以为占位符指定一个默认值。例如:

<dataSource type="POOLED">
  <!-- ... -->
  <!-- 如果属性 'username' 没有被配置,'username' 属性的值将为 'ut_user' -->
  <property name="username" value="${username:ut_user}"/>
</dataSource>

这个特性默认是关闭的。要启用这个特性,需要添加一个特定的属性来开启这个特性。例如:

<properties resource="org/mybatis/example/config.properties">
  <!-- ... -->
  <property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/> <!-- 启用默认值特性 -->
</properties>

提示 如果你在属性名中使用了 “:” 字符(如:db:username),或者在 SQL 映射中使用了 OGNL 表达式的三元运算符(如: ${tableName != null ? tableName : ‘global_constants’}),就需要设置特定的属性来修改分隔属性名和默认值的字符。例如:

<properties resource="org/mybatis/example/config.properties">
  <!-- ... -->
  <property name="org.apache.ibatis.parsing.PropertyParser.default-value-separator" value="?:"/> <!-- 修改默认值的分隔符 -->
</properties>
<dataSource type="POOLED">
  <!-- ... -->
  <property name="username" value="${db:username?:ut_user}"/>
</dataSource>

以上。

猜你喜欢

转载自blog.csdn.net/qq_37597428/article/details/132261196