当前位置:首页 » 《关注互联网》 » 正文

Android Jetpack组件-Room增删改_让开,我要吃人了的博客

21 人参与  2021年08月23日 11:43  分类 : 《关注互联网》  评论

点击全文阅读


背景

在项目中不可避免的使用数据库, 而三方框架又是五花八门, 在这中我就选择了google Jetpack组件中的Room

创建Dao

在room中Dao是一个接口, 通过@Dao注解进行修饰

@Dao
public interface TestDao {
}

添加数据

  • 通过@Insert注解指定方法为添加数据方法, 默认处理模式为忽略当前数据

由于在添加时有可能是一条数据,也有可能是一组数据,所以在这用的是可变数组

@Insert
void add(TestEntity... entities);
  • 更改添加数据模式

刚才说了通过@Insert注解指定方法默认忽略当前数据, 如果有需求需要替换怎么做呢

通过指定@Insert注解的onConflict来解决 OnConflictStrategy.REPLACE:如果有老的数据存在则会进行替换,如果没有就插入
OnConflictStrategy.ROLLBACK:如果有老的数据存在则会回滚事物,如果没有就插入
OnConflictStrategy.ABORT:如果有老的数据存在则会终止事物,如果没有就插入
OnConflictStrategy.FAIL:如果有老的数据存在则会提示插入数据失败,如果没有就插入
OnConflictStrategy.IGNORE:如果有老的数据存在则忽略当前数据,如果没有就插入
用法如下

@Insert(onConflict = OnConflictStrategy.REPLACE)
void add(TestEntity... entities);

删除数据

通过@Delete注解指定方法为删除数据方法

@Delete
void delete(TestEntity... entities);

更新数据

通过@Update注解指定方法为更新数据方法

@Update
void update(TestEntity... entities);

调用逻辑

  • AppDatabase中定义Dao对应的方法
public abstract TestDao testDao();
  • 定义Dao接口对应的实现类为单例, 并获取AppDatabase对象
public class TestRepo {
    private static TestRepo sInstance;

    private final AppDatabase mDatabase;

    private TestRepo(final AppDatabase database) {
        mDatabase = database;
    }

    public static TestRepo getInstance() {
        if (sInstance == null) {
            synchronized (TestRepo.class) {
                if (sInstance == null) {
                    AppDatabase database = AppDatabase.getInstance();
                    sInstance = new TestRepo(database);
                }
            }
        }
        return sInstance;
    }
}
  • 封装方法,并调用Dao中对应的增删改的方法

由于在Dao中add定义的为可变数组, 所以在Dao实现类中会创建两个方法, 一个为单条数据, 一个为多条数据, 以便调用

以下仅为 添加方法的样例, 删除和修改类似

public void addResults(TestEntity entity) {
    mDatabase.testDao().add(entity);
}

public void addResults(List<TestEntity> entities) {
    int size = entities.size();
    TestEntity[] amHeartRateEntities = new TestEntity[size];
    for (int i = 0; i < size; i++) {
        amHeartRateEntities[i] = entities.get(i);
    }
    mDatabase.testDao().add(amHeartRateEntities);
}

点击全文阅读


本文链接:http://www.zhangshiyu.com/post/25976.html

数据  方法  注解  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 无弹窗全文(许轻衣陆庭深)冷战两年,她离婚他发疯全文畅享阅读
  • 完结文爱如溺海恨意难休结局+番外免费列表_完结文爱如溺海恨意难休结局+番外免费(司漾许澄意柳眠眠)
  • 三国之召唤妖孽系统大反击_刘协精选作品_小说后续在线阅读_无删减免费完结_
  • 我盼孤身纵马,四海任我游在线阅读_蔺昭魏迟连蔺昭更新_小说后续在线阅读_无删减免费完结_
  • 终章小说姜挽宁段秉谦:结局+番外(愿负光阴也负你)已更新+延伸(愿负光阴也负你)清爽版
  • 奉命吃瓜后,我的瓜田遍布全世界是什么小说(云似初叶见深)(奉命吃瓜后,我的瓜田遍布全世界)全本完整清爽版在线+无广告结局
  • (姜挽宁段秉谦)姜挽宁段秉谦小说(愿负光阴也负你)小说全集速览无广告高口碑小说
  • 重生到末日高温前,被污蔑成荡妇的我自请下堂后续+完结_陈风婆婆林溪超长版_小说后续在线阅读_无删减免费完结_
  • 人家拿命下副本,你却用假身逃课?无错版_陈林连载_小说后续在线阅读_无删减免费完结_
  • 完结文犹若清风梦了云宝藏列表_完结文犹若清风梦了云宝藏(晏临渊叶知薇)
  • 儿子来自六年后:结局+番外免费品鉴:结局+番外评价五颗星
  • 完结文开挂辅助成团宠,全星际争当大冤种!结局+番外高口碑列表_完结文开挂辅助成团宠,全星际争当大冤种!结局+番外高口碑(白希薇)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1