Android mvvm架构麻烦理解流程
Android mvvm architecture trouble understanding process flow
我正在学习如何在 android 中实现 MVVM 架构,但我无法理解流程。我无法理解 dao
class 如何连接到数据库 class 以及如何将模型 class 中的 POJO
添加到数据库。
这是我的理解。
Model class
:
它是一个保存文件夹结构的 POJO class。
Dao
它包含所有需要在数据库上执行的 CRUD 操作,并附有一个可以调用它们的方法。
Database class
它扩展 RoomDatabase 并创建 returns 一个数据库实例。它还包含一个抽象方法returns Dao.
这是我的代码(我其实还有很多,但我只提供了我不了解的地方):
- 型号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
下找到生成的 类
我正在学习如何在 android 中实现 MVVM 架构,但我无法理解流程。我无法理解 dao
class 如何连接到数据库 class 以及如何将模型 class 中的 POJO
添加到数据库。
这是我的理解。
Model class
: 它是一个保存文件夹结构的 POJO class。Dao
它包含所有需要在数据库上执行的 CRUD 操作,并附有一个可以调用它们的方法。Database class
它扩展 RoomDatabase 并创建 returns 一个数据库实例。它还包含一个抽象方法returns Dao.
这是我的代码(我其实还有很多,但我只提供了我不了解的地方):
- 型号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