Room数据库:@Upsert注解的返回值是什么?
Room @Upsert 注解的返回值说明
Room 的 @Upsert 注解返回的是 UpsertResult 类型(或其集合,当批量操作多个实体时),这个对象会同时封装插入和更新操作的结果信息:
insertedIds:List<Long>类型,存储所有新插入行的 rowIdupdatedRows:Int类型,代表本次操作中被更新的行数
如果是对单个实体执行 Upsert 操作,你也可以选择让方法返回 Pair<Long?, Int>:第一个值是插入的 rowId(若为更新操作则返回 null),第二个值是更新的行数(若为插入操作则返回 0)。
举个代码示例:
@Dao interface UserDao { // 单个实体操作,返回 UpsertResult @Upsert suspend fun upsertUser(user: User): UpsertResult // 批量操作,返回 UpsertResult 集合 @Upsert suspend fun upsertUsers(users: List<User>): List<UpsertResult> // 单个实体操作,用 Pair 接收结果 @Upsert suspend fun upsertSingleUser(user: User): Pair<Long?, Int> }
和其他Room注解返回值的区别
@Insert:返回 Long(单个插入的 rowId)或 List(批量插入的 rowId 列表) @Update/@Delete:返回 Int,代表受影响的行数@Upsert:因可能同时包含插入、更新两种操作,所以用专门的UpsertResult对象整合两种结果,更清晰反馈操作细节
内容的提问来源于stack exchange,提问作者Bitwise DEVS
相关产品推荐
相关产品推荐

