从映射器访问属性

问题描述 投票:0回答:2

我在 SQL Server 中有一个链接服务器,所以当我查询某些内容时,它必须是这样的:

SELECT * FROM [SERVERNAME].[DBNAME].[SCHEMA].[TABLE]

现在我必须使用我的

servername
中提供的
dbname
schema
application.properties
来实现对现有项目的这种查询方式。

有什么方法可以从我的 Mapper(xml) 访问这些属性吗?

sql-server spring mybatis spring-mybatis
2个回答
2
投票

您可以使用属性
使用 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.
,但我刚刚测试了它,但它不起作用。但这可能是我的错误。我打算有空的时候去调查一下。


0
投票
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)
© www.soinside.com 2019 - 2024. All rights reserved.