![](/img/trans.png)
[英]Apache Camel - Read JDBC dataSource properties from properties file using spring
[英]Setting JDBC Properties Using DataSource
我正在使用DataSource对象连接到mysql数据库。
DataSource mysql = (DataSource) context.lookup("jdbc/MySQLDataSource");
Connection conn = mysql.getConnection();
我要设置属性
rewriteBatchedStatements=true
当我做一些批量上传时。 当人们使用如下所示的驱动程序管理器时,我已经看到了如何执行此操作的示例:
String myConnectionString =
"jdbc:mysql://localhost:3307/mydb?" +
"useUnicode=true&characterEncoding=UTF-8" +
"&rewriteBatchedStatements=true";
try (Connection con = DriverManager.getConnection(myConnectionString, "root", "whatever"))
如何使用数据源设置此属性?
如果将数据源强制转换为正在使用的特定实现,则将能够使用特定于所使用的jdbc驱动程序的所有get / set方法。
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
//...
MysqlDataSource mysql = (MysqlDataSource) context.lookup("jdbc/MySQLDataSource");
mysql.setRewriteBatchedStatements(true);
Connection conn = mysql.getConnection();
请参阅以下链接以供参考: http : //dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html
除了@aguibert答案,您还可以在全局级别配置相同的内容,方法是编辑Resource
名称的url
,如下所示:
<Resource name="jdbc/MySQLDataSource" auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3307/mydb?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8"
username="root"
password="root"
maxActive="100"
maxIdle="20"
maxWait="10000"/>
我已通过执行以下步骤解决了此问题:
DataSource datasource = (DataSource) context.lookup("jdbc/MySQLDataSource");
MysqlDataSource mysql_datasource = datasource.unwrap(MysqlDataSource.class);
mysql_datasource.setRewriteBatchedStatements(true);
Connection conn = mysql.getConnection();
一切都顺利进行。 需要进行此额外的unwrap()调用,因为我在glassfish上尝试了此操作。 请在下面查看aguibert的答案以获取更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.