JBoss下的java链MySQL语句
编辑:链接的答案不使用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);
}
}
};
请注意:我也在使用中生成了键,第二个表没有生成任何键,因为它是一个联接表
# 1 楼答案
配置JBoss以允许在管理界面中进行多个查询。在添加属性之前,先单击“禁用”。(在数据源下)
propertyName:
allowMultiQueries
属性值:true
生成的键不会有问题,因为第二个查询没有自动递增主键