使用Connector /
J,我想在主表中进行批量插入,然后在明细表中进行批量插入(PreparedStatement.executeBatch()
两者均适用)。我在网上找不到太多信息,因此我正在寻找有经验的人的任何反馈。
我可以 Statement.getGeneratedKeys()
用来获取主表中新插入的行的ID,以便可以将它们用作详细信息插入中的外键吗?
如果不是每个查询都导致插入(例如有一个insert ignore
或insert ... on duplicate key update
查询)怎么办?我是否会Statement.getGeneratedKeys()
为每条语句排一行,还是只为新条语句排?
Statement.getGeneratedKeys()
插入的主记录之一存在错误并且 在连接字符串中continueBatchOnError
设置为时,将返回 什么 true
?
Connector / J版本5.0.x与5.5.x之间的相关行为是否存在差异?MySQL 5.0和5.1呢?
还有其他我应该注意的问题或陷阱吗?
有一个更好的方法吗?
好吧,我进行了一些测试。使用Connector / J 5.1和MySQL 5.1.42,我观察到以下几点:
Statement.getGeneratedKeys()
可以预期插入
如果插入或更新了一行(返回的更新计数数组executeBatch()
返回‘1’或‘2’),Statement.getGeneratedKeys()
则将具有该行的键。如果该行未修改(insert ignore
或者insert ... on duplicate key update
导致无操作,则executeBatch()
返回3
),则没有键。
返回的ResultSet getGeneratedKeys
将具有(2)中成功插入的行的条目。失败的插入将不会生成密钥行(更新计数值为Statement.EXECUTE_FAILED
)
?
小心使用rewriteBatchedStatements
JDBC连接字符串。如果将其设置为true
,则任何失败都将导致重写的“块”中的每一行都被视为失败。解决此问题的一种方法是遍历失败的行,然后不进行批处理而重试它们。
?
官方的 MySQL JDBC 驱动程序,目前最新版本是5.1.6,兼容 JDBC-4.0规范。 驱动类名:com.mysql.jdbc.Driver URL格式:jdbc:mysql://servername:port/database LGPL for Connector/J 2.0.14, GPL for Connector/J 3.0.0
26.3.1. 基本的JDBC概念 26.3.2. 安装 Connector/J 26.3.3. JDBC引用 26.3.4. 与J2EE和其他Java框架一起使用 Connector/J 26.3.5. 诊断 Connector/J方面的问题 26.3.6. Changelog 通过JDBC驱动,MySQL提供了与使用Java编程语言开发的客户端应用程序的连通性,该驱动称为MySQL Conne
问题内容: 有没有解决方案通过hibernate在分区后的PostgreSQL表中批量插入?目前我遇到这样的错误… 我已经找到此链接http://lists.jboss.org/pipermail/hibernate- dev/2007-October/002771.html, 但我在网上找不到任何地方可以解决此问题或如何解决该问题 问题答案: 您可能想通过设置hibernate.jdbc.fac
问题内容: 在MS SQL上,我可以使用以下sql命令进行批量插入: 现在我想在MySQL上做同样的事情,但是我似乎无法弄清楚它是如何工作的以及使用什么查询。 问题答案: 在MySQL中,等效项为 加载数据文件 http://dev.mysql.com/doc/refman/5.1/en/load- data.html
问题内容: 我有一个dao,它基本上使用hibernate将记录插入到一个表中,该dao用标记为注释,并且我有一个服务,该服务会生成其他一些东西,然后调用我的dao。我的服务也标注了使用。 我叫服务循环。我在dao上的插入内容是否可以批量或一个接一个地工作?我如何确定它们可以批量工作?hibernateTransaction Manager是否管理批处理插入? 我正在使用Oracle DB。
我很难让Hibernate在MySQL上执行大容量插入。 我有要排序的主键生成类型,下面是我的dao.xml 这使得每次都可以执行单个查询。我也相应地刷新和清除实体管理器。 技术堆栈:Spring 4,Hibernate 5.2。 编辑1:我也浏览了下面的链接,但没有运气 https://vladmihalcea.com/how-to-batch-insert-and-update-stateme