MyBatis 配置 properties 详解

0x00:前言参考

之前的《MyBatis 中 SqlMapConfig 配置文件详解》记了一下 MyBatis 中的核心配置文件各个标签的作用和使用场景,这篇文章细说一下配置文件中 properties 标签的详细使用。

0x01:介绍

在 SqlMapConfig 配置文件中,properties 标签中的配置可以供整个配置文件使用,在任何位置都可以引入其中配置的值。properties 标签可以通过子标签 property 标签来配置一些子元素信息,也可以配置外部的动态文件。

0x02:代码示例

最经典的配置例子,代码如下:

<properties resource="org/mybatis/example/db.properties">
    <property name="username" value="root"/>
    <property name="password" value="root"/>
</properties>

首先,通过 resource 引入了一个数据库的配置文件,这时第一种配置方式,外部配置文件动态引入法。例如这个数据库的配置文件代码如下:

driver=com.mysql.jdbc.Driver
jurl=jdbc:mysql://localhost:3306/testdb?characterEncoding=utf-8
username=root
password=root

数据库配置文件配置了数据库的连接信息,这样做有个好处就是避免了配置文件的硬编码,当数据库信息需要改变时,可以直接修改数据库的配置文件,方便了操作。

第二种配置方式是可以通过子标签 property 来配置全局参数,例如,以上示例代码中,配置了 username 和 password 两个全局参数。当数据库有一个需求就是需要不同的用户登录时,这样配置,除了配置文件中的用户名和密码外,这里配置的多个用户名和密码也可以使用,使用方式通过 ${} 即可。
例如以下代码:

<dataSource type="POOLED">
    <property name="driver" value="${driver}"/>
    <property name="url" value="${url}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${password}"/>
</dataSource>

0x03:配置拓展

除了动态引入外部配置文件和通过 property 子标签配置全局参数外,MyBatis 在 3.4.2 版本之后加了一个默认值配置。什么是默认值?例如用户名 username,当其为空或者不存在时所需要赋的值就为默认值。首先,需要在 properties 标签中开启默认值配置,开启方法如下:

<properties resource="org/mybatis/example/db.properties">
    <property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/>
</properties>

配置好后,在其他的属性中需要引入 properties 标签中的参数时,按以下格式书写即可,格式如下:

<dataSource type="POOLED">
    <property name="username" value="${username:root}"
</dataSource>

只需要加入冒号后跟默认值即可,代码中表示当 username 不存在或为空时,就会赋值 root。

0x04:总结

在开发的过程中,经常会遇到数据库信息的改动,所以硬编码的配置文件不利于维护,单独的配置一个 properties 文件可以避免此问题,当需要更改数据库信息时,只需要修改其配置文件 properties 即可。


更多关于代码审计、WEB渗透、网络安全的运维的知识,请关注微信公众号:发哥微课堂。


猜你喜欢

转载自blog.csdn.net/fageweiketang/article/details/80753820