我已经使用sqlite db构建了一个清单应用程序来存储和检索数据。此应用程序的GitHub链接位于:inventory
我现在想使用Room Persistence库实现相同的应用程序,并已开始相应迁移。到现在为止,我一直关注:
Products
注释添加了名为@Entity
的POJO类:@Entity(tableName =“ InventoryList”)公共类产品{
@NonNull @PrimaryKey private int _ID; private String PRODUCT_NAME; private String PRICE; private String QUANTITY; private String SUPPLIER; private String SUPP_PH_NUM; public Products() { } // getters and setters @NonNull public int get_ID() { return _ID; } public String getPRODUCT_NAME() { return PRODUCT_NAME; } public String getPRICE() { return PRICE; } public String getQUANTITY() { return QUANTITY; } public String getSUPPLIER() { return SUPPLIER; } public String getSUPP_PH_NUM() { return SUPP_PH_NUM; } public void set_ID(@NonNull int _ID) { this._ID = _ID; } public void setPRODUCT_NAME(String PRODUCT_NAME) { this.PRODUCT_NAME = PRODUCT_NAME; } public void setPRICE(String PRICE) { this.PRICE = PRICE; } public void setQUANTITY(String QUANTITY) { this.QUANTITY = QUANTITY; } public void setSUPPLIER(String SUPPLIER) { this.SUPPLIER = SUPPLIER; } public void setSUPP_PH_NUM(String SUPP_PH_NUM) { this.SUPP_PH_NUM = SUPP_PH_NUM; }
}
ProductsDB
注释的@Database
类声明了db:@数据库(实体= {Products.class},版本= 2)
public abstract class ProductDB extends RoomDatabase { public abstract ProductDAO productDAO(); private static final String DB_NAME = "inventory.db"; private static ProductDB INSTANCE; static ProductDB getDatabase(final Context context) { if (INSTANCE == null) { synchronized (ProductDB.class) { if (INSTANCE == null) { INSTANCE = Room.databaseBuilder(context.getApplicationContext(), ProductDB.class,DB_NAME) .fallbackToDestructiveMigration() .build(); } } } return INSTANCE; } }
ProductDAO
批注的名为@DAO
的接口:@Dao
public interface ProductDAO { @Insert(onConflict = REPLACE) void insertProduct(Products products); @Update void updateProduct(Products products); @Query("SELECT * from InventoryList") List<Products> getProducts(); }
在完成上述基础工作之后,我不确定如何继续进行。我比较困惑或困惑的地方是原始应用程序中ProductCursorAdapter
类的用法,以及如何针对Room处理或更新它?我需要就该课程对房间进行任何更改吗?
在我的新实施中,我还需要做哪些更新/更改,这样Room迁移就足够了?
我希望我的问题和所提供的信息清楚。我正在寻找逐步的输入/解决方案,以便在迁移时也能很好地理解。另外,让我知道我到目前为止所做的基础工作是否缺少任何内容。