Android/Ormlite - 更新现有的或如果不存在则插入
Android/Ormlite - update existing or insert if not exists
我有店铺table,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
如果不存在。
有没有更好的方法?
您可以使用以下方法
createOrUpdate(parameter)
我有店铺table,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
如果不存在。
有没有更好的方法?
您可以使用以下方法
createOrUpdate(parameter)