@Dao
public interface UserDao {
@Delete
int delete(User user);
}
在这个例子中,delete() 方法将返回一个 int 类型,表示已删除的行数是否为零。
@Dao
public interface UserDao {
@Delete
void delete(User user);
@Query("SELECT * FROM Users")
List getAll();
@Query("DELETE FROM Users")
void deleteAll();
}
在这个例子中,我们添加了一些查询方法,可以用来查看删除操作是否已成功执行。
// 在异步方法中调用删除操作。
@SuppressLint("StaticFieldLeak")
public void deleteUserData(final User user) {
new AsyncTask() {
@Override
protected Void doInBackground(Void... voids) {
userDao.delete(user);
return null;
}
}.execute();
}
这个例子展示了使用 AsyncTask 来异步地执行删除操作。
// 创建数据库实例
AppDatabase db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "database-name").build();
// 删除 user
User user = new User();
user.setId(user_id);
userDao.delete(user);
注意,这个例子中删除的实体对象必须是已经存在于数据库中的,否则删除操作将会失败。
总