1、指定版本号,实体类,注意extend RoomDatabase
@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao userDao();
}
2、Application中初始化 allowMainThreadQueries()用于允许主线程查询
public class AppApplication extends Application {
private AppDatabase mAppDatabase;
@Override
public void onCreate() {
super.onCreate();
mAppDatabase = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "android_room_dev.db")
.allowMainThreadQueries()
.build();
}
public AppDatabase getAppDatabase() {
return mAppDatabase;
}
}
3、实体类处指定 表的名称, 要有主键,非基本类型要加@TypeConverters,get,set方法为必需
@Entity(tableName = "cache_home")
public class HomeDataBean {
@PrimaryKey(autoGenerate = true)
private int h_id;
@TypeConverters(BannerBeanTypeConverter.class)
private List<BannerBean> banner;
}
4、Dao,执行数据库操作 删除全部数据也要用 @Query,@Delete可以删除单条数据
@Dao
public interface CacheDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertCaches(HomeDataBean... homeDataBeans);
@Query("Delete FROM cache_home")
void deleteAll();
@Query("SELECT * from cache_home")
HomeDataBean[] findAll();
}
5、typeconvert类 指定自定义Bean和String的相互转换过程
public class ActivityBeanTypeConverter {
Gson gson = new Gson();
@TypeConverter
public List<HomeDataBean.ActivityBean> stringToSomeObjectList(String data) {
if (data == null) {
return Collections.emptyList();
}
Type listType = new TypeToken<List<HomeDataBean.ActivityBean>>() {
}.getType();
return gson.fromJson(data, listType);
}
@TypeConverter
public String someObjectListsToString(List<HomeDataBean.ActivityBean> someObjects) {
return gson.toJson(someObjects);
}
}
6、使用
mAppDatabase.dao.insert(...)
7、推荐文章