这是一篇关于greenDao的简明使用教程(其实就是官网tutorial的一个大概的翻译)。
一共有四篇,链接如下:
基本介绍
如上图,greendao是一个在android上orm工具。他可以帮助我们把android上的sqlite操作简化成对象的操作。
如上图,你需要在你的主Android工程之外再建立一个generator project.这是一个纯java的项目。
在这个项目里你需要在classpath中引用
greenDAO-generator.jar,和
freemarker.jar这两个jar包。
然后在这个工程中使用
greenDAO-generator中的方法
定义你数据库的实体和关系。
最后通过freemarker生成你的android工程要生用的DAO和Entiities代码。具体的定义方法我们后面再讲。
---------------------------------------------------------
做完了上面的步骤,下面就可以愉快的写我们的android工程了。
这里别忘了,为了使用generator生成的Entities和DAO方法,我们需要在我们的Android工程中引入greenDAO.jar这个包
。
如上图,这几个类是GreenDao的核心:(他们是通过之前代码生成的方式添加到你的工程中去的。)
DaoMaster:DaoMaster 是所有GreenDao使用的开始。DaoMaster封装了Sqlitedatabase并且在指定的schema中管理DAO类。他通过静态方法创建和删除tables。他的内部类
OpenHelper,
DevOpenHelper继承自
SQLiteOpenHelper,并在sqlite database中创建schema。
DaoSession:在指定的schema中管理所有的DAO对象。同样提供基本的持久化方法,比如对实体对象的insert、load、update、refresh、还有delete操作。(在新版本中,DaoSession同样负责保持
identity scope,可以简单理解为查询对象的一种缓存技术,详见
session documentation
)
DAOs:提供对实体的持久化和query,greenDao为每一个实体创建一个DAO.他提供比DaoSession更丰富的方法,比如
count, loadAll, 和insertInTx(这个方法支持批量插入).
Entities:greendao生成的持久化对象,与数据库的row一一对应。可以理解成简单的POJO或者javaBean。
---------------------------------------------------------------
核心代码的初始化
官方的example是这样给出的。
helper
=
new
DaoMaster.
DevOpenHelper
(
this
,
"notes-db"
,
null
)
;
db = helper. getWritableDatabase ( ) ;
daoMaster = new DaoMaster ( db ) ;
daoSession = daoMaster. newSession ( ) ;
noteDao = daoSession. getNoteDao ( ) ;
db = helper. getWritableDatabase ( ) ;
daoMaster = new DaoMaster ( db ) ;
daoSession = daoMaster. newSession ( ) ;
noteDao = daoSession. getNoteDao ( ) ;
example这里假设之前通过代码生成的方式生成了一个Note实体。这样通过他的DAO(NoteDao)我们就可以完成对该实体的持久化和查询。