有什么方法可以使用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无法包含在我的数据库类中