Room数据库:插入数据后如何得到响应?



我想做一些插入数据完成,但我不知道如何做到这一点。这是我的房间数据库结构。

模型
@IgnoreExtraProperties
@Entity(tableName = "message_table")
data class MessageModel(
@NonNull
@PrimaryKey
var messageId: String = "",
var messageType: String? = null,
var messageTimestamp: Long? = null,
var messageData: String? = null,
var messageSenderId: String? = null,
var roomId: String = "",
var isSeen: Boolean = false,
var uploadSuccess : Boolean = false
) : Serializable {
}

DAO接口

@Dao
interface MessageDAO {
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertMessageDAO(messageModel: MessageModel)
...
}

class MessageRepository(context : Context) {
private val messageDAO : MessageDAO
init {
val messageDatabase: MessageRoomDatabase = MessageRoomDatabase.getInstance(context)
messageDAO = messageDatabase.getMessageDao()
}
suspend fun insertMessageDAO(messageModel: MessageModel) = messageDAO.insertMessageDAO(messageModel)
...
}

视图模型

class MessageViewModel(private val messageRepository: MessageRepository) : ViewModel() {
fun insertMessageDAO(messageModel: MessageModel) = viewModelScope.launch {
messageRepository.insertMessageDAO(messageModel)
}
...
}
祝大家今天愉快!

如果您希望在成功将数据插入数据库后获得Id,则添加Long作为返回类型,如下所示

@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertMessageDAO(messageModel: MessageModel): Long

对于集合,可以添加List<Long>作为返回类型

最新更新