Android / Ormlite - 更新现有或插入(如果不存在)

时间:2016-01-05 10:36:08

标签: java android ormlite insert-update

我有Shops表,ormlite的相应字段声明如下:

@DatabaseField(canBeNull = false, columnName = C_SHOP_ID, index=true, id=true)
    private String shopId;

    @DatabaseField(dataType = DataType.BYTE_ARRAY, canBeNull = false, columnName = C_SHOP_ICON)
    private byte[] shopIcon;

    @DatabaseField(canBeNull = false, columnName = C_SHOP_DETAILS)
    private String shopDetails;

    @DatabaseField(canBeNull = false, columnName = C_SHOP_NAME)
    private String shopName;

    @DatabaseField(canBeNull = false, columnName = C_SHOP_SHORT_DESCRIPTION)
    private String shopShorDescription;

接下来,这是更新现有行的方法(由主键标识,对吗?):

 public void updateShop(Shops item)
    {
        try
        {
            getHelper().getShopItemsDao().update(item);
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }

现在我需要将updateShop方法更改为updateOrInsertShop。因此,如果存在指定的商店(由shopID限定),则应该更新。否则,它应该作为新行插入。 显然,我可以通过shopID执行select来确定某个商店是否已经存在,然后执行update(如上所述)或create(如果不存在)。

还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用以下方法

 createOrUpdate(parameter)