greenDAO是Android的对象/关系映射(ORM)工具。它为关系数据库SQLite提供了面向对象的接口。像greenDAO这样的ORM工具可以为您完成许多重复性任务,并为您的数据提供简单的界面。
1 只需要定义数据模型,GreenDao框架将创建数据实例和DAO(数据访问对象),能够节省部分代码
2使用GreenDao大多数尸体可以以每秒几千个实体的速率进行插入,更新和加载
3.GreenDao支持加密数据库来保护敏感数据
4.微小的依赖库,GreenDao的关键依赖库大小不超过100kb
5.如果需要,实体可以被激活。而活动实体可以透明的解析关系,并且有更新/删除/刷新方法,以便访问持久性功能
6.GreenDao允许你将协议缓冲区对象直接保存到数据库中,如果你通过protobuf通话到你的服务器则不需要另一个映射。常规实体的所有持久性操作都可以用于protobuf对象。
7.自动生成代码,我们需要关注实体类以及Dao,因为GreenDao已经帮我们生成了。
8.开源
保存数据库对象 SQLiteDatabase 并管理特定模式的Dao类。它具有静态方法来创建表或将他们删除。其内部类OpenHelper和DevOpenHelper时SQLite数据库中创建模式的SQLiteOpenHelper实现
管理特定模式的所有可用Dao对象,可以使用其中一个getter方法获取,DaoSession还为实体提供了一些通用的持久性方法如插入、加载、更新、刷新、删除。最后Daosession对象也跟踪一个身份范围
数据访问对象Dao持续存在并查询实体。对于每个实体,GreenDao生成一个Dao,它比DaoSesssion有更多的持久化方法,例如:count,loadAll,insertInTx
持久对象,通常实体时使用标准java属性如POJO或JavaBean来表示数据库的对象
Entity注释将Java类标记为greenDAO的可预设实体。即生成数据库中的一个表
Id注释选择long / Long属性作为实体ID。在数据库方面,它是主键。参数autoincrement是一个标志,用于使ID值不断增加(不重用旧值)。
设置一个非默认关系映射所对应的列名,默认是使用字段名,例如:@Property(nameInDb = “userName”)
设置数据库表当前列不能为空
添加此标记后不会生成数据库表的列
表名该属性在数据库中只能有唯一值
定义一对多个实体对象的关系
表示一对一关系
更加某一字段排序 ,例如:@OrderBy(“date ASC”)
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
}
}
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‘//生成数据库文件的目录;
}
@Entity public class StudentBean { private String name; private int age; private String gender; }
build以后生成如下文件
在Application中位置一个全局的会话
参考博文:https://www.cnblogs.com/WUXIAOCHANG/p/10673557.html
https://blog.csdn.net/qq_36699930/article/details/81540781
原文:https://www.cnblogs.com/qiangge-python/p/12308220.html