GreenDao简单使用

倖福魔咒の 提交于 2020-02-15 23:45:36

 

  greenDAO是Android的对象/关系映射(ORM)工具。它为关系数据库SQLite提供了面向对象的接口。像greenDAO这样的ORM工具可以为您完成许多重复性任务,并为您的数据提供简单的界面。

使用GreenDao的优点

1 只需要定义数据模型,GreenDao框架将创建数据实例和DAO(数据访问对象),能够节省部分代码

2使用GreenDao大多数尸体可以以每秒几千个实体的速率进行插入,更新和加载

3.GreenDao支持加密数据库来保护敏感数据

4.微小的依赖库,GreenDao的关键依赖库大小不超过100kb

5.如果需要,实体可以被激活。而活动实体可以透明的解析关系,并且有更新/删除/刷新方法,以便访问持久性功能

6.GreenDao允许你将协议缓冲区对象直接保存到数据库中,如果你通过protobuf通话到你的服务器则不需要另一个映射。常规实体的所有持久性操作都可以用于protobuf对象。

7.自动生成代码,我们需要关注实体类以及Dao,因为GreenDao已经帮我们生成了。

8.开源

 

GreenDao对外提供的核心类

1 DaoMaster

  保存数据库对象 SQLiteDatabase 并管理特定模式的Dao类。它具有静态方法来创建表或将他们删除。其内部类OpenHelper和DevOpenHelper时SQLite数据库中创建模式的SQLiteOpenHelper实现

2 DaoSession

  管理特定模式的所有可用Dao对象,可以使用其中一个getter方法获取,DaoSession还为实体提供了一些通用的持久性方法如插入、加载、更新、刷新、删除。最后Daosession对象也跟踪一个身份范围

3 Dao层

  数据访问对象Dao持续存在并查询实体。对于每个实体,GreenDao生成一个Dao,它比DaoSesssion有更多的持久化方法,例如:count,loadAll,insertInTx

4. 实体

  持久对象,通常实体时使用标准java属性如POJO或JavaBean来表示数据库的对象

 

关于注解的解释:

Entity注释将Java类标记为greenDAO的可预设实体。即生成数据库中的一个表

Id注释选择long / Long属性作为实体ID。在数据库方面,它是主键。参数autoincrement是一个标志,用于使ID值不断增加(不重用旧值)。 

@Property

设置一个非默认关系映射所对应的列名,默认是使用字段名,例如:@Property(nameInDb = “userName”)

@NotNull

设置数据库表当前列不能为空

@Transient

添加此标记后不会生成数据库表的列

@Unique

表名该属性在数据库中只能有唯一值

@ToMany

定义一对多个实体对象的关系

@ToOne

表示一对一关系

@OrderBy

更加某一字段排序 ,例如:@OrderBy(“date ASC”)

 

下面进入GreenDao的使用

1 配置环境,添加依赖

在工程目录下build.gradle下dependencies添加插件

buildscript {
    repositories {
        google()
        jcenter()
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.2'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // 添加GreenDao插件
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

在app的build.gradle文件下进行如下配置

apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // greendao
android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
   
}

dependencies {
    implementation 'org.greenrobot:greendao:3.2.2' // add library

}
greendao {
    schemaVersion 2//指定数据库schema版本号,迁移等操作会用到;
  daoPackage 'com.example.greendaodemo1' //dao的包名,包名默认是entity所在的包;
  targetGenDir 'src/main/java'//生成数据库文件的目录;
 }

 

2. 新建实体类用@Entity注解,实体类中的属性即为数据库中对应的字段,最后build项目机会生成相应的代码

 

@Entity
public class StudentBean {
    private String name;
    private int age;
    private String gender;
}

 

build以后生成如下文件

 

 

3 GreenDao初始化

在Application中位置一个全局的会话

 

 

参考博文:https://www.cnblogs.com/WUXIAOCHANG/p/10673557.html

    https://blog.csdn.net/qq_36699930/article/details/81540781

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!