我正在学习如何在 android 中实现 MVVM 架构,但我很难理解流程。我不明白dao
类是如何连接到数据库类的,以及如何将模型类中的POJO
添加到数据库中。
这是我所理解的。
-
Model class
: 它是一个保存文件夹结构的 POJO 类。 -
Dao
它保存了需要在数据库上执行的所有 CRUD 操作,并附加了一个方法,通过该方法可以调用它们。 -
Database class
它扩展了房间数据库并创建并返回数据库实例。它还包含一个返回 Dao 的抽象方法。
这是我的代码(我实际上有更多,但我只提供了我缺乏理解的领域):
- 模型类
' @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.数据库类(我只包含抽象方法,排除的部分返回数据库的实例)
public abstract InventoryModelDao inventoryModelDao();
Dao
究竟如何连接到database
?
当我们指定诸如@Delete
、@Insert
和@Query
操作之类的操作时,数据访问对象会在下面为我们生成大量样板代码,并且您永远不会看到这些生成的代码,但是在内部,这些方法被转换为在数据库本身上执行的方法。
因此,Dao
是通过内部生成的代码在数据库上执行的操作
扩展a_local_nobody的答案。您可以在appbuildgeneratedsourceaptdebugPACKAGEdaoInventoryModelDao_Impl
下找到生成的类