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

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

25 人参与  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://zhangshiyu.com/post/25976.html

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

  • 评论(0)
  • 赞助本站

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

最新文章

  • 弦歌断处雪满头最新后续章节在线阅读_江姝恋季容生白彦爆款小说高能章节试读
  • 男友青梅砍我手后,又让我做婚礼蛋糕免费试读_[蕊蕊林子青梅]小说章节免费试读
  • 楚砚风慕星眠(许我三千繁星愿结局+番外)_楚砚风慕星眠列表_笔趣阁(许我三千繁星愿结局+番外)
  • 也曾偷藏欢喜结局+番外乔喜商凛全书免费乔喜商凛_(也曾偷藏欢喜结局+番外乔喜商凛)乔喜商凛列表笔趣阁(也曾偷藏欢喜结局+番外乔喜商凛)
  • [重生八零:我果断退婚嫁京圈大佬]多结局分支任选读_林年年陆辰凡最新章节在线阅读
  • 长叹雁归难留全书+后续(傅迟宴林溪)全书傅迟宴林溪读结局_傅迟宴林溪读结局列表_笔趣阁(长叹雁归难留全书+后续)
  • 重回七零,小白脸哪有糙汉团长香小说节选试读_顾晓云林晚晚晚晚精彩节选推荐
  • 爱恨此消彼长,我陪你消亡情感冲突名场面试读章_[楚宴沈清菀江逸安]人物羁绊章节精选
  • 爱似流萤遇繁星节选高光片段速递‌(沐星澜陆司沉)_爱似流萤遇繁星节选高光片段速递‌沐星澜陆司沉
  • 林溪的捧一片星空后续+必读林溪傅迟宴全书在线
  • (番外)+(全书)捧一片星空全书+后续(林溪傅迟宴)列表_捧一片星空全书+后续(林溪傅迟宴)捧一片星空全书+后续
  • (番外)+(全书)爱似流萤遇繁星全书+后续+结局下载_(季婉灵陆庭尧)爱似流萤遇繁星全书+后续+结局列表_笔趣阁(季婉灵陆庭尧)

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

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