使用房间数据库和MVVM探索数据的持久性
#编程 #android #mobile #开发人员

本文将适合您,亲爱的Android开发人员,他们想使用我们的Dear Room Database了解您应用程序中的本地数据持久性,这是JetPack组件中架构的主要组件之一。

您确切知道什么是房间数据库?如果您不知道,请放心,我会用细节向您解释!
Room Database是一个Android JetPack库,在著名的SQLite顶部创建了抽象层,使我们能够使用其所有能力。

您的主要优点是:

  • 在汇编时间验证的查询。
  • 减少样板的注释使用。
  • 与其他Android体系结构组件的集成故障。

谈论一些优势,例如在编译时间检查查询,我们不会在应用程序运行时遇到错误的危险。注释,减少样板,因为我们不需要编写所有查询,只需将注释与我们的功能一起使用,并通过称为反射的现象,当编译代码时,库将自动生成宠儿的库成本

不太容易受到错误的影响。

Image description

我们将房间分为主要组成部分:

1。实体
每个实体将代表我们数据库中的一个表,例如,我们可以在应用程序中使用实体用户,因此将在我们的银行中创建一个名为用户的表。我们在用户类中使用注释@Entity来传达该房间将是银行中的表格。

2。 dao
dao是日期访问对象的首字母缩写词,此类将负责定义我们将使用的妈妈访问银行的妈妈,例如母亲在银行中添加新用户或母亲©all last挂号的。在这里,我们可以使用注释@Query编写SQL或简单地使用注释@insert插入一些数据。

3。数据库
我们的数据库类将是将应用程序连接到数据库的主要访问点,我们可以使用DAO中创建的妈妈。

我知道它可能很困惑,让我们去实用!

要使用房间实现我们的第一个数据库,我们将需要一些步骤。

1。添加依赖关系

首先,我们将其放在构建中。

plugins {
   id 'com.android.application'
   id 'org.jetbrains.kotlin.android'
   id 'kotlin-kapt'
}

现在,让我们添加对我们的构建的依赖性。gradle,让我们使用livedata,房间数据库,ViewModel并能够使用我们的注释。

def room_version = "2.4.1"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"

def lifecycle_version = "2.5.1"
def arch_version = "2.1.0"

// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
// LiveData
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
// Annotation processor
kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" 

2。创建我们的实体

要创建我们的实体,我们将遵循几个步骤:

  • 使用注释@Entity和tablename Metro创建一个类数据,以命名数据库表。

  • 对于ID列,我们将使用parano meter autogenerate = true的注释@primarykey,这将确保我们一个ID。,2,3rd)。

  • 对于其余的列,我们将使用注释@columninfo,而Parano将是我们要给列的名称。

@Entity(tableName = "car_table")
data class Car(
   @PrimaryKey(autoGenerate = true)
   val id: Int = 0,

   @ColumnInfo(name = "car_model")
   val carModel: String,

   @ColumnInfo(name = "car_color")
   val carColor: String,

   @ColumnInfo(name = "car_plate")
   val carPlate: String,
)

3。创建我们的dao

现在,让我们与注释@dao创建一个接口,您将自己在银行中进行操作。

@Dao
interface CarDAO {
   @Insert
   fun insertCar(car: Car)

   @Query("SELECT * FROM car")
   fun listAllCars() : LiveData<List<Car>>
}

4。创建我们的ViewModel

让我们为ViewModel创建一个课程,并将Dao作为类建筑商。现在,我们实际上将能够在银行执行运营。

class MainViewModel(
   private val dao: CarDAO
) : ViewModel() {
   val carLiveData : LiveData<List<Car>> = dao.listAllCars()

   fun insertCarToDatabase(car: Car) {
       viewModelScope.launch(Dispatchers.IO) {
           dao.insertCar(car)
       }
   }
}

使用所有这些创建的类,只需在活动中创建一个ViewModel的实例,我们的应用程序就可以在房间数据库中保存和读取数据。也可以创建操作以删除和编辑记录,这是您的挑战!

现在您准备创建一些应用程序,例如联系人列表或购物清单。

最后,我将留下有关如何创建ViewModel实例的文档链接。

Android View Model

我希望我能帮助您了解房间数据库的工作原理以及如何实施。我很快见到你!