如何以编程方式为mysql jdbc驱动程序设置rewriteBatchedStatements?

时间:2016-02-16 13:22:40

标签: java mysql jdbc

Here是一种加快批量插入性能的方法。可以通过网址以编程方式设置rewriteBatchedStatements吗?

2 个答案:

答案 0 :(得分:3)

如果您不想通过网址进行此操作,则可以将Properties对象与DriverManager一起使用:

Properties props = new Properties();
props.setProperty("user", ...);
props.setProperty("password", ...);
props.setProperty("rewriteBatchedStatements", "true");
Connection connection = DriverManager.getConnection(url, props);

如果您使用MysqlDataSourceMysqlConnectionPoolDataSource,则需要设置属性rewriteBatchedStatements(或调用setter setRewriteBatchedStatements(boolean)

要在获得连接后在运行时更改此设置,您应该能够使用:

((com.mysql.jdbc.ConnectionProperties) connection).setRewriteBatchedStatements(true);

注意:我只查看了最后一个选项的MySQL Connector / J源代码,我还没有测试过它。

<强>已更新

对于 c3p0 ,您可以使用以下内容:

ComboPooledDataSource cpds = ...
Connection connection = cpds.getConnection();
connection.unwrap(com.mysql.jdbc.ConnectionProperties.class).setRewriteBatchedStatements(true);

c3p0应为com.mchange:c3p0:0.9.5.2,请注意com.mchange - 与其他groupId一起使用此代码不起作用。

答案 1 :(得分:0)

您应该可以使用Connection.setClientInfo执行此操作:

Connection c = ...;
c.setClientInfo("rewriteBatchedStatements", "true");