如何在ibatis中传递全局属性

时间:2009-05-28 22:48:06

标签: spring

我正在使用ibatis为数据库交互层开发Spring MVC应用程序。我希望能够通过类路径中的属性文件(或通过spring xml配置)设置数据库的名称,这样我就可以动态更改某个应用程序的数据库,并可以通过设置参数来更改并重新部署该应用程序。

我正在寻找的是能够在现有数据库上设置数据库名称。假设我有一个名为DB1的系统,其中包含数据库:user,user_qa和user_dev。我希望能够参数化SQL,而不是做:

SELECT * FROM user.Logins

我会做

SELECT * FROM $database.user$.Logins

所以我可以更改database.user属性并重新部署应用程序,而不是每次更改数据库名称时重写大量SQL语句。

1 个答案:

答案 0 :(得分:0)

在Spring中非常简单。假设您有一个基本的conf文件[database.properties]:

jdbc.username = user
jdbc.host = mydbserver.com

然后在Spring config xml文件中:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:database.properties</value>
</property>
</bean>

现在您希望这些变量替换配置文件中的名称:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="host"><value>${jdbc.host}</value></property>
<property name="username"><value>${jdbc.username}</value></property>
</bean>