如何使用列表中的异步任务从 android 中的 table 房间获取所有数据
How to get all data from room table in android using async Task in a List
我想从 Android 的 Room
数据库中获取 List<Model>
,而不使用 LiveData
。
如何使用 asynctask
或 thread
函数获取所有行。
首先在您的 DAO 中定义 get 方法,假设您正在获取所有用户:
用户模型:
@Entity
public class UserModel {
@PrimaryKey
public int id;
public String first_name;
public String last_name;
}
用户数据访问对象
@Dao
public interface UserDao {
@Query("SELECT first_name, last_name FROM user")
public List<UserModel> getAllUsers();
}
创建您的应用程序数据库包装器class
@Database(entities = {UserModel.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao userDao();
}
使用以下代码访问数据库
public class UserServices{
private AppDatabase db ;
public UserServices(){
db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "database-name").build();
}
public List<UserModel> getAllUsers(){
return new GetUsersAsyncTask().exicute().get();
}
private class GetUsersAsyncTask extends AsyncTask<Void, Void,List<UserModel>>
{
@Override
protected Void doInBackground(Void... url) {
return db.getUserDao().getAllUsers();
}
}
}
现在通过调用
访问用户
UserServices userServices=new UserServices();
List<UserModel> users=userServices.getAllUsers();
我想从 Android 的 Room
数据库中获取 List<Model>
,而不使用 LiveData
。
如何使用 asynctask
或 thread
函数获取所有行。
首先在您的 DAO 中定义 get 方法,假设您正在获取所有用户:
用户模型:
@Entity
public class UserModel {
@PrimaryKey
public int id;
public String first_name;
public String last_name;
}
用户数据访问对象
@Dao
public interface UserDao {
@Query("SELECT first_name, last_name FROM user")
public List<UserModel> getAllUsers();
}
创建您的应用程序数据库包装器class
@Database(entities = {UserModel.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao userDao();
}
使用以下代码访问数据库
public class UserServices{
private AppDatabase db ;
public UserServices(){
db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "database-name").build();
}
public List<UserModel> getAllUsers(){
return new GetUsersAsyncTask().exicute().get();
}
private class GetUsersAsyncTask extends AsyncTask<Void, Void,List<UserModel>>
{
@Override
protected Void doInBackground(Void... url) {
return db.getUserDao().getAllUsers();
}
}
}
现在通过调用
访问用户UserServices userServices=new UserServices();
List<UserModel> users=userServices.getAllUsers();