DAO:如何使用 Insert 中的 return 值
DAO: How to use the return value from Insert
根据 the documentation 一个 @Insert
函数可以 return 一个 long
,这是插入项目的新 rowId
。如何使用 return 值?
@Dao
interface TodoDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(todo: TodoItem): Long
}
请注意,我的 @Entity
的 id
是自动生成的。
@PrimaryKey(autoGenerate = true)
这是整个 TodoItem
实体。
@Entity(tableName = "todos")
@Parcelize
data class TodoItem(val text: String, val priority: Priority) : Parcelable {
@PrimaryKey(autoGenerate = true)
var todoId: Long = 0
}
If id on
TodoItemis a
var, you could assign the return value to
id`,那么现在你的实体有它生成的主键,用于未来的 DAO 操作。
如果您要使用 @Parcelize
,请确保所有基本属性都在 data class
构造函数中。就目前而言,您的 todoId
属性 不会被放入 Parcel
.
@Entity(tableName = "todos")
@Parcelize
data class TodoItem(
val text: String,
val priority: Priority,
@PrimaryKey(autoGenerate = true) var todoId: Long = 0
) : Parcelable
然后,给定一个名为 entity
的实体和一个名为 dao
的 DAO:
entity.todoId = dao.insert(entity)
根据 the documentation 一个 @Insert
函数可以 return 一个 long
,这是插入项目的新 rowId
。如何使用 return 值?
@Dao
interface TodoDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(todo: TodoItem): Long
}
请注意,我的 @Entity
的 id
是自动生成的。
@PrimaryKey(autoGenerate = true)
这是整个 TodoItem
实体。
@Entity(tableName = "todos")
@Parcelize
data class TodoItem(val text: String, val priority: Priority) : Parcelable {
@PrimaryKey(autoGenerate = true)
var todoId: Long = 0
}
If id on
TodoItemis a
var, you could assign the return value to
id`,那么现在你的实体有它生成的主键,用于未来的 DAO 操作。
如果您要使用 @Parcelize
,请确保所有基本属性都在 data class
构造函数中。就目前而言,您的 todoId
属性 不会被放入 Parcel
.
@Entity(tableName = "todos")
@Parcelize
data class TodoItem(
val text: String,
val priority: Priority,
@PrimaryKey(autoGenerate = true) var todoId: Long = 0
) : Parcelable
然后,给定一个名为 entity
的实体和一个名为 dao
的 DAO:
entity.todoId = dao.insert(entity)