gpt4 book ai didi

java - 使用 Spring 和 DBCP 和 MySQL 设置连接时区

转载 作者:IT老高 更新时间:2023-10-28 13:57:31 39 4
gpt4 key购买 nike

我的环境

  • Java 5
  • Spring 2.5.5
  • DBCP 数据源(org.apache.commons.dbcp.BasicDataSource)
  • MySQL

类似帖子

链接

我的问题

  • 我需要在我的连接上设置时区,以防止在处理 TIMESTAMP 列时发生转换。

我的想法/研究

  • DBCP 连接池没有提及时区附近的任何内容。 LINK

  • THIS 上描述了我调查并认为没问题的内容帖子,举例如下:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="URL" value="${database.url}" />
<property name="user" value="${database.username}" />
<property name="password" value="${database.passwd}" />
<property name="connectionCachingEnabled" value="true"/>
<property name="sessionTimeZone" value="GMT-3"/>
</bean>

求助区:)

  • 但这不起作用!!
  • 我这里想要的是一个简单的方法,优先使用Spring在jdbc连接上配置时区。

提前感谢任何帮助/提示/建议/知识分享


解决方案:

我的解决方案基于这篇文章中收集的提示!谢谢大家!

(...)
@Override
public Connection getConnection() {
Connection conn = null;
Statement statement = null;
try {
conn = super.getConnection();
statement = conn.createStatement();
statement.execute("SET time_zone = \'" + timezone+"\'");
} catch (SQLException e) {
LOG.fatal("Error while SET time_zone", e);
} finally {
try {
statement.close();
} catch (SQLException e) {
LOG.warn("Error while closing statement", e);
}
}
if(LOG.isDebugEnabled())
LOG.debug("SET time_zone("+timezone+") for connection, succeed!");
return conn;
}
(...)

在我的 Spring 配置文件中:

<bean id="dataSource" class="com.my.package.dbcp.TimezoneEnabledDataSource" destroy-method="close">
(...)
<property name="timezone" value="${database.timezone}" />
(...)
</bean>

我希望这篇文章可以在将来对某人有所帮助。有任何问题请联系我!

最佳答案

您应该能够将相同的 SQL 语句放在 DBCP 配置元素的 initConnectionSqls 属性中。只需将其添加到 DBCP 配置元素中

<property name="initConnectionSqls" value="SET time_zone = '${database.timezone}'"/>

根据您的 DBCP 版本,您可能必须使用 connectionInitSqls 作为属性名称。此信息直接来自 DBCP configuration文档。

关于java - 使用 Spring 和 DBCP 和 MySQL 设置连接时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5970835/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com