Android GreenDao 使用

Android GreenDao 使用

  • 一.创建
  • 二.增加
  • 三.删除
  • 四.更新
  • 五.查找

一.创建

(1)创建一个java工程(可以当成项目的一个module),在main函数里创建Schema,向其添加多个Entity(相当于表),调用DaoGenerator的generateAll方法生成整个数据库

public static void main(String[] args) throws IOException {   

         Schema schema = new Schema(1, "com.dao”);//默认包路径   

         addNote(schema);   

         try {        
	         new DaoGenerator().generateAll(schema, "app/src/main/java”);//生成在指定路径下的默认包路径下   
          } catch (Exception e) {       
                e.printStackTrace();   
          }
}

private static void addNote(Schema schema) {   

          Entity note = schema.addEntity("Note"); 

          //添加属性   

          note.addIdProperty();   

          note.addStringProperty("text").notNull();   

          note.addStringProperty("comment");   

          note.addDateProperty("date");

}

(2)通过DaoMaster打开数据库,获取DaoSession对象进行管理各个Dao类,各个Dao类完成对相应表的增删改查

DaoMaster.DevOpenHelper openHelper = new DaoMaster.DevOpenHelper(this, "note_db", null);

SQLiteDatabase db = openHelper.getWritableDatabase();

DaoMaster master = new DaoMaster(db);

DaoSession session = master.newSession();

NoteDao noteDao = session.getNoteDao();

noteDao.delete()//增删改查等操作

(3)注意:

  • 一个Schema可以创多个Entity,一个Entity对应一个POJO类

  • 通过DaoMaster管理一个数据库,使用其内部类DevOpenHelper可打开该数据库

  • 通过DaoMaster打开一个DaoSession来管理所有表的Dao类对象,打开各个表的Dao类对象后可以进行表的增删改查操作

  • 往往一个app涉及一个db,只需打开一次DaoSession即可,所以可写在application里,即在自定义的Application类的初始化里初始化DaoSession对象

  • POJO,DaoMaster等类的创建是通过执行一个java程序的main方法来自动生成到指定包的(需要导包)

二.增加

(1)通过session打开Dao类后,直接调用dao的各种insert方法传入pojo对象即可插入到对应表中

noteDao.insert(new Note(x,x,x));

noteDao.insertInTx(迭代器,数组);//传入迭代器或数组

noteDao.insertOrReplace(new Note(x,x,x));//主键重复时可替换

noteDao.insertOrReplaceInTx();//主键重复时可替换,且可传入迭代器或数组

三.删除

(1)通过session打开Dao类后,直接调用dao的delete各种方法即可删除数据(一般是通过传入对象的id字段进行查找删除)

noteDao.delete(new Note(x,x,x));//会根据id删除

noteDao.deleteAll();

noteDao.deleteInTx();//传入迭代器或数组

noteDao.deleteByKey();//根据id删除

noteDao.deleteByKeyInTx();//根据id删除,且可传入迭代器或数组

四.更新

(1)通过session打开Dao类后,直接调用dao的update方法传入对象或集合即可更新(传入对象的id做判断)

noteDao.update(new Note(x,x,x));//根据id查找并更新

noteDao.updateInTx();//传入迭代器或数组

五.查找

(1)通过session打开Dao类后,直接获取全部或某一个

noteDao.loadAll();

noteDao.load(id);

(2)可以用dao类的queryBuilder打开一个QueryBuilder对象,进行.where/and/or/join等条件方法进行查找设置,设置完后调用.list/listLazy等方法可以返回查找结果

QueryBuilder qb = noteDao.queryBuilder();

qb.where(NoteDao.Properties.Text.eq(“”));//eq为等于,还有lt,le等比较方法;每个Dao的Properties里存有字段,如Text

List<Note> data = qb.list();

(3)也可以用dao类的queryBuilder.build方法打开一个Query对象,该对象查找完后可以反复使用,只需调用.setParameter设置对应位置的参数再去查询即可

Query query = noteDao.queryBuilder().where(NoteDao.Properties.Text.eq(“”)).build().forCurretThread();

List<Note> data = query.list();

query.setParameter(0,“”);//重设指定位置的值即可再次查询

(4)查询时括号里的条件参数如果需自定义可以直接用new StringCondition(“”)来写原生sql语句进行查询,或者直接用queryRaw方法原生查询

qb.where(new StringCondition(“”));

noteDao.queryRaw(“”,new String[]{});

你可能感兴趣的:(知识积累,android相关)