Android Room的简单使用

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

Room学习文章推荐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值