GreenDao 插入、insertOrReplace、保存
GreenDao insert, insertOrReplace, save
谁能解释一下 GreenDao 库中方法 insert
、insertOrReplace
和 save
之间的区别?
我知道 insert
只是插入,如果不存在则 insertOrReplace
插入,如果存在则 updates/replaces 插入。
但令人困惑的是 insertOrReplace
和 save
有何不同?
谢谢
来自 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
语句以确定是否 运行 一个 update
或 insert
:
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 上不存在,它将什么都不做。
谁能解释一下 GreenDao 库中方法 insert
、insertOrReplace
和 save
之间的区别?
我知道 insert
只是插入,如果不存在则 insertOrReplace
插入,如果存在则 updates/replaces 插入。
但令人困惑的是 insertOrReplace
和 save
有何不同?
谢谢
来自 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
语句以确定是否 运行 一个 update
或 insert
:
if (hasKey(entity)) {
update(entity);
} else {
insert(entity);
}
而 insertOrReplace
执行实际的 INSERT OR REPLACE
sql 语句。
insert()
将实体添加到 Table,假设具有该键的实体不存在。如果存在,它将抛出 ExceptioninsertOrReplace()
如果 Key 不存在,则将 Entity 添加到 Table,如果 Key 存在,则替换。save() 将没有 Key 的 Entity 添加到 Table 中,如果它有 Key 并且 Entity 存在于 Table 上则更新。如果 Entity 有 Key 但在 Table 上不存在,它将什么都不做。