GreenDao 插入、insertOrReplace、保存

GreenDao insert, insertOrReplace, save

谁能解释一下 GreenDao 库中方法 insertinsertOrReplacesave 之间的区别?

我知道 insert 只是插入,如果不存在则 insertOrReplace 插入,如果存在则 updates/replaces 插入。

但令人困惑的是 insertOrReplacesave 有何不同?

谢谢

来自 Javadoc for AbstractDao.java

"Save 'saves' an entity to the database: depending on the existence of the key 
property, it will be inserted (key is null) or updated (key is not null). 
This is similar to insertOrReplace, but may be more efficient, because if 
a key is present, it does not have to query if that key already exists."

通过查看 save 方法的代码,它包含 haskey 方法的 if 语句以确定是否 运行 一个 updateinsert:

if (hasKey(entity)) {
    update(entity);
} else {
    insert(entity);
}

insertOrReplace 执行实际的 INSERT OR REPLACE sql 语句。

  • insert() 将实体添加到 Table,假设具有该键的实体不存在。如果存在,它将抛出 Exception

  • insertOrReplace() 如果 Key 不存在,则将 Entity 添加到 Table,如果 Key 存在,则替换。

  • save() 将没有 Key 的 Entity 添加到 Table 中,如果它有 Key 并且 Entity 存在于 Table 上则更新。如果 Entity 有 Key 但在 Table 上不存在,它将什么都不做。