个人记录 GreenDao Insert

相关知识

insert 插入一条数据

insertInTx 批量插入数据

insertOrReplace 插入数据,传入的对象主键如果存在于数据库中,有则更新,否则插入

insertOrReplaceInTx 批量插入数据 同上

save 插入数据,判断对象是否有Key值,有则更新,否则插入

insert

//插入操作
    private void insert() {
        studentDao.insert(getStudent());
    }

insert基本的插入操作,没有必要讲太多

insertInTx

//批量插入
    private void insertInTx() {
        List<Student> list = new ArrayList<>();
        list.add(new Student(1, "小明", 18, "男"));
        list.add(new Student(2, "小花", 16, "女"));
        list.add(new Student(3, "小白", 15, "男"));
        studentDao.insertInTx(list);
    }

insertOrReplace

扫描二维码关注公众号,回复: 2659376 查看本文章
//插入或替换
    private void insertOrReplace() {
        studentDao.insertOrReplace(getStudent());
    }

使用上面的批量插入数据演示

主键存在于数据库,则更新数据,否则插入数据

insertOrReplaceInTx

//批量插入或替换
    private void insertOrReplaceInTx() {
        List<Student> list = new ArrayList<>();
        list.add(new Student(1, "one", 18, "man"));
        list.add(new Student(2, "two", 16, "woman"));
        list.add(new Student(3, "three", 15, "man"));
        studentDao.insertOrReplaceInTx(list);
    }

使用上面批量插入的数据演示

Save

private void save() {
        studentDao.save(new Student(null, "小明", 22, "男"));
    }

private void save() {
        studentDao.save(new Student(1L, "小明", 22, "男"));
    }

save插入数据前,判断对象Key值,如果对象有Key值则更新(upDate)数据,对象没有Key值则插入(insert)数据;Key值就是你设置的Long类型的id。

注意:如果数据库没有插入任何数据,而对象有Key值则调用的是更新,从而无法插入数据

适用场景

  1. 只有本地数据库,且Key默认由数据库生成,直接使用save好
  2. 插入的数据有Key,这种情况通常是同步线上数据到本地数据库,因为直接使用了线上数据库的Key,所以不能用save,必须使用insertOrReplace。

在确保插入的数据的Key存在于数据库中,使用save高效,一律情况下使用insertOrReplace

源码地址

猜你喜欢

转载自blog.csdn.net/NianandShao/article/details/81453288