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、推薦文章