如何使用GreenDAO 3.0

GreenDAO 3.0

一、       简介

greenDao是一个开源项目,为了帮助Android开发者在sqlite中数据存储,SQLite是一个轻量级的关系型数据库。以下是最近查看各位大神文章总结的使用方式,多谢各路大神

二、       配置

1.    为主模块添加依赖,如下图所示。

如何使用GreenDAO 3.0_第1张图片

2.    继续在同一文件中添加greendao Gradle Plugin 及greendao library,如下图所示。

如何使用GreenDAO 3.0_第2张图片

schemaVersion---->指定数据库schema版本号,迁移等操作会用到

daoPackage------>指定通过greenDao服务插件生成的数据库代码文件的包名,默认为你的entity所在的包名

targetGenDir-------->数据库代码文件所在的目录,默认是“build/gererated/source/greenDao”,这里我们将其自定义到我们的Java目录中“src/main/java”方便查看和编辑,不配置的话将会保存在默认目录下。

 除了这些属性之外,还有一些属性如下:

targetGenDirTest:设置生成单元测试目录。

generateTests:设置自动生成单元测试用例。

3.    创建一个entity(一个类对应一张表,一个属性对应一个列)

如何使用GreenDAO 3.0_第3张图片

@Entity注解将Java类转换成数据库支持的实体,同时指导GreenDAO创建必需的代码。它支持配置日常的设置,使用方式如下图:

如何使用GreenDAO 3.0_第4张图片

@Id:通过这个注解标记的字段必须是Lon/long类型的,这个字段在数据库中表示它就是主键

@Transient:表明这个字段不会被写入数据库,只是作为一个普通的java类字段,用来临时存储数据的,不会被持久化

其它属性见下图所示:

如何使用GreenDAO 3.0_第5张图片

4.    执行Make Project

 如何使用GreenDAO 3.0_第6张图片

编译项目,User实体类会自动编译,生成getset方法并且会在com.anye.greendao.gen目录下生成三个文件

如何使用GreenDAO 3.0_第7张图片

三、       使用

 

1.    将Demo中的以下两个文件拷贝到模块中(不使用数据库升级功能请跳过此步骤

修改HMROpenHelper文件,如下图所示

如何使用GreenDAO 3.0_第8张图片

2.    初始化数据库,创建MyApplication类

如何使用GreenDAO 3.0_第9张图片

notes-db”是我们自定的数据库名字。一个DaoMaster就代表着一个数据库的连接;DaoSession可以让我们使用一些Entity的基本操作和获取Dao操作类,DaoSession可以创建多个,每一个都是属于同一个数据库连接的。

public class MyApplication extends Application {
 private DaoMaster.DevOpenHelper mHelpter;
 private SQLiteDatabase db;
 private DaoMaster mDaoMaster;
 private DaoSession mDaoSession;
 public static MyApplication instances;
 @Override    public void onCreate() {
     super.onCreate();
     instances = this;
     setDatabase();
 }
 public static MyApplication getInstances(){
     return instances;
 }
/**
 * 设置greenDao
 */
private void setDatabase() {
    // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
    // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
    // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
    // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
   mHelper = new DaoMaster.DevOpenHelper(this,"notes-db");
    db = mHelper.getWritableDatabase();
    // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。 
    mDaoMaster = new DaoMaster(db); 
    mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
      return mDaoSession;
}
public SQLiteDatabase getDb() {
      return db;
  }
}

 

3.    更改MyApplicaton(不使用数据库升级请跳过此步骤

将步骤2

更改为

如何使用GreenDAO 3.0_第10张图片

更改为

4.    获取数据库。在要使用数据库的位置添加如下语句

UserDao mUserDao =MyApplication.getInstances().getDaoSession().getUserDao();

 

SQL可能比较难写,而且只在运行时才能发现错误。QueryBuilder类让你不用SQL构建自定义查询,并帮你在编译时就发现错误。通过userDaoqueryBuilder()方法,生成一个查找构造器,可以给构造器添加where条件判断、按照某某字段排序以及查询的条数等基本的数据库操作。list()方法表示查询的结果为一个集合。更多使用见第四部分参考文件

5.    增加

6.    删除

基本操作:

使用QueryBuilder:

7.    修改

基本操作:

使用QueryBuilder:

如何使用GreenDAO 3.0_第11张图片

8.    查

基本操作:

如何使用GreenDAO 3.0_第12张图片

使用QueryBuilder:

如何使用GreenDAO 3.0_第13张图片


四、       数据库升级

1.    执行第三部分使用中的步骤1,3

2.    更改Entity(比如demo中的User类)。

3.    修改主模块的build.gradle文件中的版本号加1:

如何使用GreenDAO 3.0_第14张图片

4.    makeProject

5.    在手机上运行即可自动更新数据库。

6.    附:数据库升级原理:

使用DevOpenHelper打开数据库时,在它的onUpgrade方法中会调用以下两个方法:

如何使用GreenDAO 3.0_第15张图片

如何使用GreenDAO 3.0_第16张图片

这种方式意味着每次都重新创建数据库,所以数据不会报错。这种方式只适合开发人员调试用,在app上线后,数据库升级需要自己封装一个方法继承DaoMaster.OpenHelper,在本文中即HMROpenHelper.class类。在这个类中重写了OnUpgrade()方法:如何使用GreenDAO 3.0_第17张图片

它调用了MigrationHelper.class类的migrate方法,这个类用于数据库升级过程中先将原表改名为临时表,再新建新表,最后将临时表的数据导入新表并删除临时表:如何使用GreenDAO 3.0_第18张图片

如何使用GreenDAO 3.0_第19张图片

五、       参考文件

配置参考:http://www.jianshu.com/p/4986100eff90

更多种注解参考:http://blog.csdn.net/bugproof/article/details/52074959

QuerBuilder增删改查参考:

http://blog.csdn.net/njweiyukun/article/details/51893092

QueryBuilder更多使用方法参考:http://blog.csdn.net/a284266978/article/details/44983927

GreenDAO官网:http://greenrobot.org/

数据库升级参考:http://www.tuicool.com/articles/VJ7bAnu


结束语:本文demo会随后在评论中附上:)


你可能感兴趣的:(Android)