我的程序中有for循环,将新对象保存到数据库中。看起来像
http://marubon-ds.blogspot.com/2017/09/knn-k-nearest-neighbors-by-tensorflow.html
此代码段每30秒执行一次,并将所有值保存到数据库中。数据库中的某些值具有两个相同的字段,另一个字段。如何在h2数据库中更新值,而不是插入新值?
答案 0 :(得分:1)
我建议您在for循环中,创建一种方法,该方法通过使用诸如ID之类的唯一标识符进行查询来检查对象是否已存在于H2 DB中。使用以下示例RDB查询作为参考:
private static final String PRODUCT_ALREADY_EXISTS_QUERY = "SELECT EXISTS(SELECT 1"
+ " FROM inventory.products "
+ " WHERE 1 = 1"
+ " AND id = :id)";
然后,如果记录确实存在,则调用更新方法,该方法利用查询使用唯一标识符进行UPDATE。 RDB示例查询为:
private static final String UPDATE_QUERY = "UPDATE inventory.products"
+ " SET (company_id, name, price, type, quantity, created_date, last_modified_date) = "
+ " (:companyId, :productName, :price, :productType, :quantity, :createdDate, :lastModifiedDateTime)"
+ " WHERE id = :id ";
如果记录不存在,则像您一样创建记录。