之前,android的数据库部分,自己一直傻傻地按照最原始的方式:写一个类比如MyDbHelper去继承SQLiteOpenHelper,然后建库,建表,建字段,然后再创建一个类MyDbDao去实现操作数据库的增删改查的方法。

直到在博客上看到大牛写的 LitePal 的使用,才发现原来数据库部分可以这么简化。LitePal的详细地使用可以参考 http://blog.csdn.net/guolin_blog/article/details/38083103 一共九篇,分析讲解得很详细。

后来,发现除了LitePal, 另一个开源的框架 greenDao。在github上比LitePal还要火。所以今天就整理一下greenDao的具体的使用。

greenDao的github下载地址:https://github.com/greenrobot/greenDAO
greenDao的官网:http://greendao-orm.com/

下面是官网给出的greenDao的一些特性

Object/relation mapping (ORM) (对象关系映射)

Performance (性能 高)

Slim library (资源库小 不到100k)

Code generation (代码生成)

快速入门

来看它给出的 DaoExample 示例

1. 创建表

new DaoMaster.DevOpenHelper(this, "notes.db", null);

这里使用DaoMaster这个类可以很方便地获得一个SQLiteOpenHelper,只需传入数据库的表名,就可以帮我们自动创建好数据库了,省去了自己写SQL语句。

2. 插入和删除

  • 预先准备好操作该数据库的对象(noteDao)
daoMaster = new DaoMaster(db);daoSession = daoMaster.newSession();noteDao = daoSession.getNoteDao();
  • 插入
Note note = new Note(null, noteText, comment, new Date());noteDao.insert(note);Log.d("DaoExample", "Inserted new note, ID: " + note.getId());

这里只要创建一个Note对象,并在Dao调用插入方法时传入就算完成了。而且,插入完成时,插入的note的数据库id 就是 这个note对象的id。

  • 删除
noteDao.deleteByKey(id);

删除操作也很直接,就这么一句。

3. 数据模型 和 代码生成
为了创建实体更好的扩展note,我们看下DaoExampleGenerator这个示例,它只有一个类,里面定义了数据模型:

Schema schema = new Schema(1, "de.greenrobot.daoexample");Entity note= schema.addEntity("Note");note.addIdProperty();note.addStringProperty("text").notNull();note.addStringProperty("comment");note.addDateProperty("date");new DaoGenerator().generateAll(schema, "../DaoExample/src-gen");

可以看出,创建的Schema对象,可以来添加实体,并且这个实体与数据库的表有关联,同时,一个实体包含多个属性,这与数据库的列名相互映射。
一旦schema完全定义完成,就可以触发代码生成了,前面的Note.java、noteDao.java 和 DaoMaster.java等文件就是这样来的。

介绍

1. 基本概念

greenDAO 是android平台的一个对象关系映射的工具。它为关系型数据库提供了一个面向对象的接口。像greenDao这样的ORM工具,能为我们提供很简单的数据接口 并且 做很多重复的任务。

2. Dao编码生成项目

要在android项目中使用greenDao,最好将自动生成的工程(普通的Java Project)放在一个独立的文件夹中,目的是好与你本身的项目区分开来。

3. 核心类

一旦生成了代码,就可以使用greenDao了,不要忘记在项目中引入greenDao的核心库(greenDao.jar)。

下面是greenDao的几个基本接口的核心类:

  • DaoMaster:里面有静态的方法来创建或删除表。它是greenDao的入口,掌握这数据库并管理着特定模式的DAO类。

  • DaoSession:管理着所有可以获取到的特定模式的DAO对象,可以通过get方法获取。DaoSession也提供了一些基本的实体增删改查操作的持久化的方法。

  • DAOs:每一个实体,都会生成一个DAO,并且有更多的持久化的方法。

  • Entities:就像JavaBean,通常,是代表使用标准Java属性的数据库的一行。

4. 核心的初始化

helper = new DaoMaster.DevOpenHelper(this, "notes.db", null);db = helper.getWritableDatabase();daoMaster = new DaoMaster(db);daoSession = daoMaster.newSession();noteDao = daoSession.getNoteDao();

模型实体

1. Schema:

Schema schema = new Schema(1, "de.greenrobot.daoexample");

schema是你定义的第一个对象,参数1是schema的版本,参数2是默认的包名(实体、DAOs、Junit测试用的包名)。
也可以为DAO 和 test类选择不同的包名:

schema.setDefaultJavaPackageTest("de.greenrobot.daoexample.test");schema.setDefaultJavaPackageDao("de.greenrobot.daoexample.dao");

2:Entities:

Entity user = schema.addEntity("User");

schema有了之后,就可以添加entities了,并且可以改变一些设置,最重要的是,可以增加一些属性到实体上。

user.addIdProperty();user.addStringProperty("name");user.addStringProperty("password");user.addIntProperty("yearOfBirth");

好了,这里只是简单地整理了一下greenDao的相关知识,不够全面,大家可以去它的官网上仔细阅读文档。能做的demo验证验证就更好不过了。

更多相关文章

  1. [置顶] Android(安卓)开发中Parcel存储类型和数据容器
  2. GreenDao 的简介和使用
  3. 原:Android(安卓)获取屏幕高度、标题高度、状态栏高度详解
  4. android Content Provider的使用
  5. SQlite字段类型升级
  6. android parcelable 详细介绍
  7. java解析json字符串的两种方法详解(Android通用)
  8. Android垃圾回收解析
  9. AIDL——Android接口描述语言

随机推荐

  1. Android:VerticalSeekBar
  2. Android—复选框和单选框使用
  3. Android(安卓)自定义ProgressBar--进度自
  4. Android: java.lang.ClassCastException:
  5. android 序列化传值
  6. android获取mac地址
  7. Android(安卓)LruCache & DiskLruCache c
  8. Android(安卓)UI控件详解-CheckBox(多选
  9. Android英语单词记忆程序源码
  10. 【Android】使用代码动态创建布局