Here是一种加快批量插入性能的方法。可以通过网址以编程方式设置rewriteBatchedStatements
,不吗?
答案 0 :(得分:3)
如果您不想通过网址进行此操作,则可以将Properties
对象与DriverManager
一起使用:
Properties props = new Properties();
props.setProperty("user", ...);
props.setProperty("password", ...);
props.setProperty("rewriteBatchedStatements", "true");
Connection connection = DriverManager.getConnection(url, props);
如果您使用MysqlDataSource
或MysqlConnectionPoolDataSource
,则需要设置属性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");