设置
我有一个使用 Spring 4.3、JdbcTemplate、Hibernate 5 和 MySQL 8 的应用程序。我在每个模式的 hibernate 中实现了多租户,其中我使用 hibernates 多租户机制切换模式 -MultiTenantConnectionProvider并且基本上在那里做:
connection.createStatement().execute("USE " + databaseNamePrefix + tenantIdentifier);
这有效。
现在我的应用程序的报告部分JdbcTemplate用于查询数据库。现在我想在 JdbcTemplate 执行的每个查询之前发出这个USE tenantIdentifier语句。
题
我如何为 JdbcTemplate 执行的每个查询添加一些 SQL 或语句?
我试过的
我查看了 JdbcTemplate,唯一发现的是设置一个NativeJdbcExtractor. 我已经尝试了下面的代码,但他正在通过这些方法甚至没有登录。
@Bean
@DependsOn("dataSource")
public JdbcTemplate jdbcTemplate() {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource());
jdbcTemplate.setNativeJdbcExtractor(new SimpleNativeJdbcExtractor(){
@Override
public Connection getNativeConnection(Connection con) throws SQLException {
LOGGER.info("getNativeConnection");
System.out.println("aaa");
return super.getNativeConnection(con);
}
@Override
public Connection getNativeConnectionFromStatement(Statement stmt) throws SQLException {
System.out.println("aaa");
LOGGER.info("getNativeConnectionFromStatement");
return super.getNativeConnectionFromStatement(stmt);
}
});
return jdbcTemplate;
}
向 Spring 添加功能请求:https : //jira.spring.io/browse/SPR-17342
编辑:我查看了 Spring 5,他们删除了 JdbcExtractor 的东西,所以这绝对是错误的路径。
沧海一幻觉
ITMISS
相关分类