【问题标题】:Android mvvm architecture trouble understanding process flowAndroid mvvm架构麻烦理解流程
【发布时间】:2019-11-29 14:29:16
【问题描述】:

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

这是我的理解。

  1. Model class: 它是一个 POJO 类,其中包含文件夹结构。

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

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

这是我的代码(其实我还有更多,但我只提供了我不理解的部分):

  1. 模型类

`@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
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类(我只包含了抽象方法,排除部分返回一个db实例)

public abstract InventoryModelDao inventoryModelDao();

Dao 到底是如何连接到database 的?

【问题讨论】:

    标签: java android mvvm viewmodel dao


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      扩展 a_local_nobody 的答案。在app\build\generated\source\apt\debug\PACKAGE\dao\InventoryModelDao_Impl下可以找到生成的类

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-08
        • 2015-10-22
        • 2011-12-30
        • 2017-06-21
        • 1970-01-01
        • 2015-01-27
        • 2021-02-12
        • 1970-01-01
        相关资源
        最近更新 更多