有什么方法可以使用Android Room创建可重用的通用基类DAO?

public interface BaseDao<T> {

  @Insert
  void insert(T object);

  @Update
  void update(T object);

  @Query("SELECT * FROM #{T} WHERE id = :id")
  void findAll(int id);

  @Delete
  void delete(T object);

}

public interface FooDao extends BaseDao<FooObject> { ... }

public interface BarDao extends BaseDao<BarEntity> { ... }

在没有声明相同的接口(interface)成员并为每个子类编写查询的情况下,我无法找到实现此目的的任何方法。当处理大量类似的DAO时,这变得非常乏味...

最佳答案

今天,即2017年8月8日,版本为 1.0.0-alpha8 ,下面的Dao起作用。我可以让其他的Dao英雄在GenericDao上。

@Dao
public interface GenericDao<T> {
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insert(T... entity);

    @Update
    void update(T entity);

    @Delete
    void delete(T entity);
}

但是,GenericDao无法包含在我的数据库类中

10-07 19:41
查看更多