-
导包
apply plugin: 'org.greenrobot.greendao' //AS升级到3.0后变更为implementation compile 'org.greenrobot:greendao-generator:3.2.0' compile 'org.greenrobot:greendao:3.2.0'
-
核心类
- 三个核心类
DaoMaster:使用greenDAO的切入点。DaoMaster保存数据库对象(SQLiteDatabase)并管理特定模式的DAO类(而不是对象)。它有静态方法来创建表或删除它们。它的内部类OpenHelper和DevOpenHelper是SQLiteOpenHelper实现,它们在SQLite数据库中创建模式。
DaoSession:管理特定模式的所有可用DAO对象,您可以使用其中一个getter方法获取该对象。DaoSession还提供了一些通用的持久性方法,如实体的插入,加载,更新,刷新和删除。最后,DaoSession对象还跟踪身份范围。
DAO:数据访问对象(DAO)持久存在并查询实体。对于每个实体,greenDAO生成DAO。它具有比DaoSession更多的持久性方法,例如:count,loadAll和insertInTx。
-
默认位置
app -> build -> source -> greendao -
自定义配置位置
greendao { schemaVersion 2//数据库版本号,每次改动记得更新 daoPackage 'com.xxx.greendao'//设置DaoMaster、DaoSession、Dao包名 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 }
-
实体类
@Entity public class Note { @Id(autoincrement = true)//自增 private Long nid; private String nname; @Generated(hash = 1917899488) public Note(Long nid, String nname) { this.nid = nid; this.nname = nname; } @Generated(hash = 1272611929) public Note() { } //get(),set() }
-
初始化(创建完实体类后clean,rebuild后就会在指定位置生成DaoMaster等)
// 最好写在Application中 DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "note-db", null); SQLiteDatabase db = helper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); DaoSession daoSession = daoMaster.newSession(); // 在Activitie或Fragment中调用 NoteDao noteDao = daoSession.getNoteDao();
-
增删改查
DaoSession daoSession = ((App) getApplication()).getDaoSession(); noteDao = daoSession.getNoteDao();
- 增
Note note = new Note(); note.setText(noteText); ... noteDao.insert(note);
- 删
noteDao.deleteByKey(id);
- 改
note.setText("This note has changed."); noteDao.update(note);
- 查
//查询所有 noteList = noteDao.queryBuilder().list();
参考资料:
greenDAO3
GreenDaoUpgradeHelper
AbstractDao
greenDAO3 入门(配置,基本操作,数据库升级)
GitHub