我在 SQL Server 中有一个链接服务器,所以当我查询某些内容时,它必须是这样的:
SELECT * FROM [SERVERNAME].[DBNAME].[SCHEMA].[TABLE]
现在我必须使用我的
servername
中提供的dbname
、schema
和application.properties
来实现对现有项目的这种查询方式。
有什么方法可以从我的 Mapper(xml) 访问这些属性吗?
您可以使用属性。
使用 MyBatis-Spring-Boot,您可以在
application.properties
中使用前缀 mybatis.configuration.variables.
[1] 定义属性。
mybatis.configuration.variables.db_servername=YOUR_SERVER_NAME
mybatis.configuration.variables.db_dbname=YOUR_DB_NAME
mybatis.configuration.variables.db_schema=YOUR_SCHEMA
也可以引用相同
application.properties
中定义的变量。
mybatis.configuration.variables.db_servername=${servername}
mybatis.configuration.variables.db_dbname=${dbname}
mybatis.configuration.variables.db_schema=${schema}
然后您可以使用
${}
在映射器中使用这些变量。
SELECT * FROM [${db_servername}].[${db_dbname}].[${db_schema}].[TABLE]
注意:
#{}
不起作用。请参阅此常见问题解答条目了解差异。
[1] 文档说前缀是
mybatis.configuration-properties.
,但我刚刚测试了它,但它不起作用。但这可能是我的错误。我打算有空的时候去调查一下。
mybatis.configuration-properties.foo=bar
配置属性
MyBatis 配置的外部化属性。指定的 属性可以用作 MyBatis 配置文件中的占位符 映射器文件。详细信息请参见 MyBatis 参考页面。
配置。*
MyBatis Core 提供的配置 bean 的属性键。关于 可用的嵌套属性请参见 MyBatis 参考页面。注意:这 属性不能与配置位置同时使用。
参见https://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/
[故障排除技巧]
MybatisProperties.configurationProperties
的 bean 以确保您的属性已加载。SqlSessionFactory
bean,请不要忘记在该 bean 方法中调用 SqlSessionFactoryBean.setConfigurationProperties(MybatisProperties)
。