编辑:链接的答案不使用 LAST_INSERT_ID
,仍在寻找答案。
我正在使用 JBoss 并通过数据源 (JNDI) 获取连接。
如何一次链接并执行多个 SQL 语句,其中第二个语句取决于第一个语句的输出 (LAST_INSERT_ID()
)
preparedStatement = connection.prepareStatement("INSERT INTO product(name) VALUES(?); INSERT INTO brand_product(brand_id, product_id) VALUES(?, LAST_INSERT_ID())", Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, name);
preparedStatement.setInt(2, brandId);
if(preparedStatement.executeUpdate() != 0) {
try (ResultSet generatedKeys = preparedStatement.getGeneratedKeys()) {
if(generatedKeys.next()) {
product = new Product(generatedKeys.getInt(1), name);
}
}
};
请注意:我也生成了正在使用的键,第二个表没有生成任何键,因为它是一个连接表。
最佳答案
配置 JBoss 以允许在管理界面中进行多个查询。在添加属性之前先单击禁用。 (在数据源下)。
属性名称:
allowMultiQueries
属性值:true
生成的键不会有问题,因为第二个查询没有自动递增主键。
关于java - JBoss下链式MySQL语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42516694/