我想用mybatis和雪花数据库。我的情况与这张海报相似:
配置mybatis以使用现有连接
基本上,我可以获得java.sql.connection对象,但我不能通过数据源或通常由rdbms数据库(如oracle)执行的其他步骤来获得。一个建议的解决方案是这样做:
SqlSession snowflakeSession = snowflakeSqlSessionFactory.openSession(getSnowflakeConnection());
它们将处于多线程环境中。如果有人关闭了snowflakesession对象,那会关闭底层java.sql.connection对象吗?我计划重用这些会话,但只在一个线程内。这有必要吗?
对于oracle,我可以这样做:
OracleDataSource result = new OracleDataSource();
Class.forName("oracle.jdbc.driver.OracleDriver");
String connectionString = jdbcUrl;
String username = jdbcUserName;
String password = jdbcPassword;
OracleDataSource oracleDataSource = (OracleDataSource)result;
oracleDataSource.setURL(connectionString);
oracleDataSource.setPassword(password);
oracleDataSource.setUser(username);
String timeoutKey = "oracle.jdbc.ReadTimeout";
Properties connectionProperties;
try {
connectionProperties = oracleDataSource.getConnectionProperties();
if(connectionProperties==null) {
connectionProperties = new Properties();
}
connectionProperties.put(timeoutKey, 60 /* minutes */ * 60 /* seconds per minutes */ * 1000 /* ms per seconds */);
} catch (SQLException e) {
e.printStackTrace();
}
return result;
如果我可以创建一个snowflakedatasource对象,我就可以像创建oracle一样轻松地创建连接。我必须小心如何创建连接,因为mybatis扫描xmlmapper文件,或者重新使用从以前的连接请求中找到的内容,这也是一点。
1条答案
按热度按时间qzlgjiam1#
它似乎没有文档记录,但是snowflake的jdbc驱动程序包提供了一个基本的datasource类,当
DataSource::getConnection()
称为: