GreenDao 使用教程 二

上一篇 总结了grendao 环境搭建以及简单的增删查改,接下来将全面解析框架的使用,基于上篇的orm模型(Note)数据库讲解

GreenDao的插入:

插入的方式有很多:

1:daoSession.getNoteDao().insert(note);

   //插入note 如果note指定主键与表中已经存在了,就会发生异常(android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: tb_note._id (code 1555))而插入不进去

 daoSession.insert(note); 同上

2: daoSession.getNoteDao().insertOrReplace(note);
      当主键存在的时候会替换,所以能够很好的执行插入操作,推荐
   daoSession.insertOrReplace(note); 同上
3: 原生的sqlite
  
   String insertSql = String.format("insert into %s (%s,%s,%s) values('%s','%s','%s')",
        NoteDao.TABLENAME,
        NoteDao.Properties.Title.columnName,
        NoteDao.Properties.Content.columnName,
        NoteDao.Properties.CreateTime.columnName,
        note.getTitle(),
        note.getContent(),
        note.getCreateTime());
   daoSession.getDatabase().execSQL(insertSql);
4:批量插入
   public void insertBatch(List<Note> notes){
    daoSession.getNoteDao().insertInTx(notes);
  }
GreenDao的更新操作
1:单条更新(唯一性条件是主键相同)
   
   public void update(Note note) throws Exception {
        daoSession.update(note);
      //  daoSession.getNoteDao().update(note);
   }
2:批量更新 
   //批量更新
   public void updateBatch(List<Note> notes) throws Exception {
       daoSession.getNoteDao().updateInTx(notes);
   }
3:原生sql:  
   public void updateSql(String sql){
    //  daoSession.getDatabase().execSQL("update .....");
     daoSession.getDatabase().execSQL(sql);
  }

GreenDao 的删除操作
1:单条删除(唯一性是主见相同)
   public void delete(Note note) throws Exception {
      daoSession.delete(note);
     // daoSession.getNoteDao().delete(note);
   }

2: 单条删除 指定主键删除

   public void delete(long id) {
       daoSession.getNoteDao().deleteByKey(id);
   }
3:批量删除
  public void deleteBatch(List<Note> notes) {
     daoSession.getNoteDao().deleteInTx(notes);
  }
4:批量按主键删除
  // 批量按主键删除
   public void deleteBatchByKey(List<Long> pkIds) {
     daoSession.getNoteDao().deleteByKeyInTx(pkIds);
   }
5:删除所有 
   public void deleteAll() throws Exception {
    daoSession.deleteAll(Note.class);
    //   daoSession.getNoteDao().deleteAll();
  }
6:原始sqlite语句
  daoSession.getDatabase().execSQL(deletesql);

GreenDao 查询操作 也是最复杂的
1:单条查询
    //按主键查询
    public Note query(long pk) throws Exception {
       // daoSession.getNoteDao().load(pk);//按主见查询
        //daoSession.getNoteDao().load(rowId);//按行号查询
        return daoSession.load(Note.class, pk);
    }

2: QueryBuilder 复合查询
  
   public List<Note> queryBuider() throws Exception {
        //select from tb_note where Content like 'greendao'
        return daoSession.getNoteDao().queryBuilder().where(NoteDao.Properties.Content.like("greendao")).build().list();
    }

   

   public long queryBuider2(long pk) throws Exception {
        //select count(*) from tb_note where Content like 'greendao'
        return daoSession.getNoteDao().queryBuilder().where(NoteDao.Properties.Content.like("greendao")).buildCount().count();
    }

   

 public void queryBuider3() throws Exception {
        Cursor cursor = null;
        try {
            //CursorQuery 部分查询
            CursorQuery greendao = daoSession.getNoteDao().queryBuilder().where(NoteDao.Properties.Content.like("greendao")).buildCursor();
            cursor = greendao.query();
            while (cursor.moveToNext()) {
                long id = cursor.getInt(0);
                String title = cursor.getString(1);
                String content = cursor.getString(2);
                String time = cursor.getString(cursor.getColumnIndex(NoteDao.Properties.CreateTime.columnName));
            }
        } finally {
            if (cursor != null)
                cursor.close();
        }
    }

3:查询所有:

  

    public void queryAll()
    {
        daoSession.loadAll(Note.class);
        daoSession.queryBuilder(Note.class).build().list();
        daoSession.getNoteDao().queryBuilder().build().list();
        daoSession.getNoteDao().loadAll();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亚洲小炫风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值