GreenDao3.0的使用方法总结

        最近一段时间通过对数据库操作的新方法的学习,发现了一种操作简单的框架,所以小弟在这里进行了一下简单总结,希望能帮到其他开发学习者,接下来让我们了解下这个框架,greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单、更方便。

一,首先我们先了解下GreenDao优点

1,性能高,号称Android最快的关系型数据库.

2,内存占用小.

3,库文件比较小,小于100k.

4,支持数据库加密greendao支持SQLCiPher.

5,简洁易用的API.

二,总结一下GreenDao的使用方法。

1.首先我们在project的gradle文件中引入greenDAO插件,引入之后如下:

project的gradle文件的配置

然后在module的gradle文件中添加greenDAO的插件,并引入相关类库,修改之后的效果如下:

module的gradle文件配置

我们首先应该引入相关插件,然后在dependencies中引入greenDAO的类库。至于greendao中,schemaVersion表示数据库版本号,当我们的数据库需要升级时我们修改这里的版本号即可(修改这里的版本号,greendao会自动修改生成到DAOMaster中的版本号),targetGenDir表示greenDAO生成的DAOMaster和DaoSession的位置。准备好后我们就已经成功将greenDAO引入到我们的项目中了。

2.数据库初始化

数据库引入成功后,在使用时,我们需要构建一个实体类

数据库实体类

@Entity表示这个实体类,点击编译按钮后一会会在数据库中生成对应的表,@Id表示该字段是Id,我们注意到该字段的数据类型为包装类型Long,为什么要用包装类型呢?因为插入数据时第一个参数是ID,如果为null,字段会自动增长。@Property则表示该属性将作为表的一个字段,其中nameInDb是这个属性在数据库中对应的数据名称。到这里,写完这些之后将项目进行编译,编译成功之后系统会帮助我们生成相应的构造方法和get/set方法,并且还会在我们的包下生成DaoMaster和DaoSession(在这里提醒下所谓的编译就是点击下那个同步/编译的按钮,所有需要的类个方法就自动生成了,具体可参考小弟github上的小demo)。这里知识常用的注解,还有其他的注解需要的同学们可以自行查询。

当我们把这一步做完之后,我们就可以进行数据库的初始化了,具体操作如下:

数据库的初始化

首先获取一个DevOpenHelper对象,这个类有点类似于我们使用的SqliteOpenHelper,我们主要在这个类中对数据库的版本进行管理。我们对数据库基本的初始化操作就完成了,玩过hibernate的小伙伴都知道,想要操作User实体类,得先有一个UserDao,这个UserDao要怎么获取呢?在上图中我们可以看到已经获取到了。

到现在这一步,基本准备工作我们已经做完了,接下来我们就可以对数据库进行操作了,哈哈哈

放松一下

3.添加数据

数据库的增删改查我们都需要通过UserDao来操作,插入具体操作如下:

添加数据

User的第一个参数为id,这里传null的话在插入的过程中id字段会自动增长,第二个参数是username,每次插入时生成一个随机数,避免重复。

4.删除数据

删除数据和修改数据的思路一样,都是要先查找到数据:where表示查询条件,这里我是查询id小于等于9的数据,where中的参数可以有多个,就是说可以添加多个查询条件。最后的list表示查询结果是一个List集合,如果你只想查询一条数据,最后unique即可。当然,我们也可以根据id来删除数据,具体操作如下:

删除数据

5.修改数据

修改数据也是先查询,再进行修改:

修改数据

这里我添加了两个查询条件,一个是id要大于等于9,同是还要满足username like %haha%,特别注意最后的unique表示只查询一条数据出来即可。

6.查询数据

查询数据

其实上面删除和修改都已经涉及到查询了,查询里边有许多非常好用的函数,我这里举两个例子between表示查询id介于1到15之间的数据,limit表示查询5条数据。

7.数据库升级

数据库的升级其实就两个步骤我们来看看:

7.1修改gradle文件

首先在module的gradle文件中修改版本号:

更新版本号为2

7.2修改实体类

实体类修改

重新进行编译即可修改成新的实体类。

一般的数据库升级这样就可以了,特殊情况可能需要自己编写数据库迁移脚本,这种时候可以自定义DBHelper,定义方式如下,注意继承类:

DBHelper   extends    DaoMaster.OpenHelper {

  public    static    final    String    DBNAME ="lenve.db";

  public    DBHelper(Context context) {

  super(context, DBNAME,null);

 }

@Override

public    void    onUpgrade(SQLiteDatabase    db,int    oldVersion,int    newVersion) {

super.onUpgrade(db, oldVersion, newVersion);

}

}

可以在onUpgrade方法中进行数据库的更新修改,如果自定义了DBHelper,则数据库的初始化变为如下方式:

DBHelper devOpenHelper =newDBHelper(this);

DaoMaster daoMaster =newDaoMaster(devOpenHelper.getWritableDb());

DaoSession daoSession = daoMaster.newSession();

userDao = daoSession.getUserDao();

OK,这就是greenDAO数据库框架的一个简单学习过程。仅作为自己的一个学习记录。

具体可参考小弟上传到github上的demo:https://github.com/liuxinggithub/greendao.git

本文参考了网上资料,总结了一下使用方法,方便更多使用者的使用。

参考文档:blog.csdn.net/u012702547/article/details/52226163

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容