一.GreenDao概述:
greenDAO 是一个可以帮助 Android 开发者快速将 Java 对象映射到 SQLite 数据库表单中的 ORM 解决方案。greenDAO的特点运行效率最高、内存消耗最少,官网:http://greendao-orm.com/。。。github下载地址:https://github.com/greenrobot/greenDAO。
1、 DaoCore:greenDAO的核心库。
2、 DaoExample:greenDAO使用范例项目。
3、 DaoExampleGenerator:greenDAO使用范例的实体类及DAO组件的生成器项目。
4、 DaoGenerator:greenDAO的DAO组件生成器项目。
5、 DaoTest:greenDAO的测试项目。
6、 PerformanceTestOrmLite:ormlite框架性能测试项目
二.生成GreenDao框架:
在使用之前要下载greendao-generator.jar和freemarker.jar两个包,freemarker需要这个来生成java文件,来看具体怎么使用:
(1).首先生成一个java项目(不是android项目),然后将上面greendao-generator.jar和freemarker.jar导入java项目。
生成一个类,名字随便取:我得命名DaoGeneratorTest:
<span style="font-size:18px;">public class DaoGeneratorTest {
public static void main(String[] args) throws Exception {
//第一个参数是数据库版本号,第二个是自动生成包的路径
Schema schema = new Schema(1, "de.greenrobot.daoexample");
addNote(schema);
//生成路径,就是在什么目录下生成这个文件,我的路径是在一个新建android项目src-gen目录下
new DaoGenerator().generateAll(schema, "../AndroidTestGreenDao/src-gen");
}
private static void addNote(Schema schema) {
//Entity是一个实体,实体类名为Note
Entity note = schema.addEntity("Note");
//主键,设置自增长可在后面家.autoincrement()
note.addIdProperty();
//实体类中的属性(也就是表中的字段),不能为空,其他设置看下方法名就能知道什么意思了
note.addStringProperty("text").notNull();
note.addStringProperty("comment");
note.addDateProperty("date");
}
}</span>
而且要注意:src-gen要先创建好,才能成功。
生成成功:
Schema类:可以看成一个存放实体的容器。
Entity类:可用于将实体类映射到对应的表。
DaoGenerator:实体类和DAO组件的生成器,generateAll根据schema和目录参数,首先生成文件存放目录,并从schema中取出所有entity,根据freemaker模板生成对应的实体了和DAO组件。
三.使用GreenDao框架:
创建一个android项目,我得android项目名为(我上面java指定的路径就是这个项目下):AndroidTestGreenDao
这里greendao-1.3.0-beta-1.jar在github下载的DaoExample目录下libs下拿出来的。
创建数据库:
public class MainActivity extends Activity {
private SQLiteDatabase db;
private DaoMaster master;
private DaoSession session;
private NoteDao noteDao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建数据库名为notes-db
DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "notes-db",
null);
db = helper.getWritableDatabase();
master = new DaoMaster(db);
session = master.newSession();
noteDao = session.getNoteDao();
//添加一条数据
Note note = new Note(10L, "1", "1", new Date());
noteDao.insert(note);
}
}
Note:实体对象,映射到表NOTE。
NoteDAO:通过代码可知此类提供了生成建表、和删表的方法,并类继承了AbstractDao(greenDAO核心类之一,封装了操作表中数据的各种方法)。
DaoMaster:继承自AbstractDaoMaster,用于创建数据库,并管理数据库连接。
DaoSession:继承自AbstractDaoSession,所有DAO对象的入口,通过此类可获得实体了的DAO组件。