Android mvvm架构麻烦理解流程

Android mvvm architecture trouble understanding process flow

我正在学习如何在 android 中实现 MVVM 架构,但我无法理解流程。我无法理解 dao class 如何连接到数据库 class 以及如何将模型 class 中的 POJO 添加到数据库。

这是我的理解。

  1. Model class: 它是一个保存文件夹结构的 POJO class。

  2. Dao 它包含所有需要在数据库上执行的 CRUD 操作,并附有一个可以调用它们的方法。

  3. Database class 它扩展 RoomDatabase 并创建 returns 一个数据库实例。它还包含一个抽象方法returns Dao.

这是我的代码(我其实还有很多,但我只提供了我不了解的地方):

  1. 型号class

` @Entity

public class InventoryModel {

@PrimaryKey (autoGenerate = true)
public int id;
private String itemName;
private int itemQuantity;
private double itemPrice;

public InventoryModel(String itemName, int itemQuantity, double itemPrice){
    this.itemName = itemName;
    this.itemQuantity = itemQuantity;
    this.itemPrice = itemPrice;
}

2.Dao

@Dao
public interface InventoryModelDao {

@Query("SELECT * FROM InventoryModel")
LiveData<List<InventoryModel>> getAllInventoryItems();

@Insert(onConflict = OnConflictStrategy.ABORT)
void addItem(InventoryModel inventoryModel);

 @Delete
void deleteItem(InventoryModel inventoryModel);
}

3.Database class(我只包含了抽象方法,排除部分returns一个db的实例)

public abstract InventoryModelDao inventoryModelDao();

Dao 究竟如何连接到 database

当我们指定 @Delete@Insert@Query 操作时,数据访问对象会在下面为我们生成大量样板代码,您永远不会看到这些生成的代码,但在内部这些方法被转换为在数据库本身上执行的方法。

因此,Dao 是通过内部生成的代码在您的数据库上执行的操作

扩展a_local_nobody的回答。您可以在 app\build\generated\source\apt\debug\PACKAGE\dao\InventoryModelDao_Impl

下找到生成的 类