Я создал приложение для инвентаризации, используя sqlite db для хранения и извлечения данных.Ссылка GitHub для этого приложения находится здесь: инвентарь
Теперь я хочу реализовать то же приложение, используя библиотеку постоянства Room, и приступил к соответствующей миграции.До сих пор я делал следующее:
- Добавлен класс POJO с именем
Products
с использованием аннотации @Entity
:
@ 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;
}
}
A
ProductsDB
класс с использованием аннотации
@Database
, которая объявляет db:
@ База данных (entity = {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?
Надеюсь, мой вопрос и предоставленная информация понятны.Я ищу пошаговый ввод / решение по этому вопросу, чтобы у меня также было хорошее понимание при миграции.Кроме того, дайте мне знать, если в основах, которые я сделал до сих пор, что-то не хватает.