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
来源:https://www.cnblogs.com/qiangge-python/p/12308220.html