如何使存储库占用多个列?
How can I make the repository take more than one column?
下面的代码来自我基于另一个简单的应用程序制作的应用程序,其中实体只有一列。
现在我添加了另一列 (materialBrand),但我在 AsynkTask 的存储库 class 上实现相同的列时遇到了困难。
请帮助。
这是 class 实体:
@Entity(tableName = "material_table")
public class MaterialEntity {
@PrimaryKey
@NonNull
@ColumnInfo(name = "material_name")
private String mMaterialName;
@ColumnInfo(name = "material_brand")
private String mMaterialBrand;
public MaterialEntity(@NonNull String materialName, String materialBrand) {
this.mMaterialName = materialName;
this.mMaterialBrand = materialBrand;
}
public String getMaterialName(){
return this.mMaterialName;
}
public String getMaterialBrand(){
return this.mMaterialBrand;
}
}
这就是道:
@Dao
public interface MaterialDao {
@Insert
void insert(MaterialEntity materialName, MaterialEntity materialBrand);
@Query("DELETE FROM material_table")
void deleteAll();
@Query("SELECT * from material_table ORDER BY material_name ASC")
LiveData<List<MaterialEntity>> getAllMaterials();
}
这是存储库 Class:
public class MaterialRepository {
private MaterialDao mMaterialDao;
private LiveData<List<MaterialEntity>> mAllMaterial;
public MaterialRepository(Application application) {
MaterialRoomDatabase db = MaterialRoomDatabase.getDatabase(application);
mMaterialDao = db.materialDao();
mAllMaterial = mMaterialDao.getAllMaterials();
}
public LiveData<List<MaterialEntity>> getAllMaterials() {
return mAllMaterial;
}
public void insert (MaterialEntity materialName, MaterialEntity materialBrand) {
new insertAsyncTask(mMaterialDao).execute(materialName, materialBrand);
}
private static class insertAsyncTask extends AsyncTask<MaterialEntity, Void, Void> {
private MaterialDao mAsyncTaskDao;
insertAsyncTask(MaterialDao dao) {
mAsyncTaskDao = dao;
}
@Override
protected Void doInBackground(final MaterialEntity... params) {
mAsyncTaskDao.insert(params[0]);
return null;
}
}
}
下面的插入方法有两个参数作为参数
@道
public 接口 MaterialDao {
@Insert
void insert(MaterialEntity materialName, MaterialEntity materialBrand);
@Query("DELETE FROM material_table")
void deleteAll();
@Query("SELECT * from material_table ORDER BY material_name ASC")
LiveData<List<MaterialEntity>> getAllMaterials();
}
不能只发送一个参数。
mAsyncTaskDao.insert(params[0]);
下面的代码来自我基于另一个简单的应用程序制作的应用程序,其中实体只有一列。 现在我添加了另一列 (materialBrand),但我在 AsynkTask 的存储库 class 上实现相同的列时遇到了困难。 请帮助。
这是 class 实体:
@Entity(tableName = "material_table")
public class MaterialEntity {
@PrimaryKey
@NonNull
@ColumnInfo(name = "material_name")
private String mMaterialName;
@ColumnInfo(name = "material_brand")
private String mMaterialBrand;
public MaterialEntity(@NonNull String materialName, String materialBrand) {
this.mMaterialName = materialName;
this.mMaterialBrand = materialBrand;
}
public String getMaterialName(){
return this.mMaterialName;
}
public String getMaterialBrand(){
return this.mMaterialBrand;
}
}
这就是道:
@Dao
public interface MaterialDao {
@Insert
void insert(MaterialEntity materialName, MaterialEntity materialBrand);
@Query("DELETE FROM material_table")
void deleteAll();
@Query("SELECT * from material_table ORDER BY material_name ASC")
LiveData<List<MaterialEntity>> getAllMaterials();
}
这是存储库 Class:
public class MaterialRepository {
private MaterialDao mMaterialDao;
private LiveData<List<MaterialEntity>> mAllMaterial;
public MaterialRepository(Application application) {
MaterialRoomDatabase db = MaterialRoomDatabase.getDatabase(application);
mMaterialDao = db.materialDao();
mAllMaterial = mMaterialDao.getAllMaterials();
}
public LiveData<List<MaterialEntity>> getAllMaterials() {
return mAllMaterial;
}
public void insert (MaterialEntity materialName, MaterialEntity materialBrand) {
new insertAsyncTask(mMaterialDao).execute(materialName, materialBrand);
}
private static class insertAsyncTask extends AsyncTask<MaterialEntity, Void, Void> {
private MaterialDao mAsyncTaskDao;
insertAsyncTask(MaterialDao dao) {
mAsyncTaskDao = dao;
}
@Override
protected Void doInBackground(final MaterialEntity... params) {
mAsyncTaskDao.insert(params[0]);
return null;
}
}
}
下面的插入方法有两个参数作为参数
@道 public 接口 MaterialDao {
@Insert
void insert(MaterialEntity materialName, MaterialEntity materialBrand);
@Query("DELETE FROM material_table")
void deleteAll();
@Query("SELECT * from material_table ORDER BY material_name ASC")
LiveData<List<MaterialEntity>> getAllMaterials();
}
不能只发送一个参数。
mAsyncTaskDao.insert(params[0]);