美文网首页
【Android】GreenDao增删改查(三)

【Android】GreenDao增删改查(三)

作者: 代码充电宝 | 来源:发表于2020-06-08 09:14 被阅读0次

    (1)插入

    • 常用API
    //这是最简单的插入语句,新增一行数据,返回值为行号
     public long insert(T entity)
     
     //传递一个数组,新增多行数据
     public void insertInTx(T... entities)
     
     //传递一个集合,新增多行数据
    public void insertInTx(Iterable<T> entities)
    
    //传递一个集合,新增多行数据,setPrimaryKey:是否设置主键
    public void insertInTx(Iterable<T> entities, boolean setPrimaryKey)
    
    //将给定的实体插入数据库,若此实体类存在,则覆盖
    public long insertOrReplace(T entity)
    
    //使用事务操作,将给定的实体插入数据库,若此实体类存在,则覆盖
    public void insertOrReplaceInTx(T... entities)
    
    //使用事务操作,将给定的实体插入数据库,若此实体类存在,则覆盖
    public void insertOrReplaceInTx(Iterable<T> entities)
    
    //使用事务操作,将给定的实体插入数据库,若此实体类存在,则覆盖,并设置是否设定主键
    public void insertOrReplaceInTx(Iterable<T> entities, boolean setPrimaryKey)
    
    • 插入
            DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "demo.db", null);
            SQLiteDatabase db = helper.getWritableDatabase();
            DaoMaster daoMaster = new DaoMaster(db);
            DaoSession daoSession = daoMaster.newSession();
            StudentDao studentDao = daoSession.getStudentDao();
    
            for (int i = 0; i < 10; i++) {
                Student student = new Student();
                student.setMId(i+"");
                student.setHobby("篮球");
                student.setMAge(i);
                student.setClassName("一年级");
                long id = studentDao.insertOrReplace(student);
                Log.e(TAG, "onCreate: "+id );
            }
    
    • 查询后再更新,就不会导致其他字段清空
            // 先查询后更新
            Student load = studentDao.load("0");
            load.setHobby("足球");
            studentDao.update(load);
    

    (4)保存

    • save
    public void save(T entity)
    public void saveInTx(T... entities)
    public void saveInTx(Iterable<T> entities)
    
    • 传入一个实体entity,如果entity的主键在表中已存在,则更新已有数据,反之,则插入新数据
    public void save(T entity) {
        if (hasKey(entity)) {
            update(entity);
        } else {
            insert(entity);
        }
    }
    

    <a name="wxGaC"></a>

    (5)删除

    • 常用方法
    //根据实体,删除一条数据(默认根据主键删除数据)
    public void delete(T entity)
    
    //删除所有数据
    public void deleteAll()
    
    //根据key删除数据
    public void deleteByKey(K key)
    
    //删除多条数据
    public void deleteInTx(T... entities)
    
    //根据主键数组,删除多条数据
    public void deleteByKeyInTx(K... keys)
    
    //根据集合,删除多条数据
    public void deleteByKeyInTx(Iterable<K> keys)
    

    相关文章

      网友评论

          本文标题:【Android】GreenDao增删改查(三)

          本文链接:https://www.haomeiwen.com/subject/alaktktx.html