前言
Greendao是一款用于数据库创建与管理的框架,由于原生SQLite语言比较复杂繁琐,使得不少程序员不得不去学习SQLite原生语言,但是学习成本高,效率低下,所以不少公司致力于开发一款简单的数据库管理框架,较为著名的就有Greendao和ORMLite,但是就数据分析来看,Greendao的效率是高于ORMLite及其他框架的,是目前该行业的领先者。也因为Greendao的使用方法简便,且效率高使得其成为目前使用最为广泛的数据库管理框架,这也是广大程序员的福音。
优点
- 存取速度快
- 支持数据库加密
- 轻量级
- 激活实体
- 支持缓存
- 代码自动生成
步骤
第一步 环境配置
在项目的build.gradle文件下进入如下配置 (注释的地方就是要添加的东西)
buildscript {
repositories {
jcenter()
mavenCentral() // add repository
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
}
}
在App的build.gradle文件下进行如下配置 (注释的地方就是要添加的东西)
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin
greendao {
schemaVersion 1 //数据库版本
targetGenDir 'src/main/java' //指定生成代码的目录
daoPackage //生成代码到具体包下
}
dependencies {
implementation 'org.greenrobot:greendao:3.2.2' // add library
}
第二步 新建实体类用@Entity注解,实体类中的属性即为数据库中对应的字段,最后build项目即会生成相应的代码
build之前实体类如下:
@Entity
public class HistoryData {
private String date;
private String history;
}
build之后实体类如下:
@Entity
public class HistoryData {
private String date;
private String history;
@Generated(hash = 895975915)
public HistoryData(String date, String history) {
this.date = date;
this.history = history;
}
@Generated(hash = 422767273)
public HistoryData() {
}
public String getDate() {
return this.date;
}
public void setDate(String date) {
this.date = date;
}
public String getHistory() {
return this.history;
}
public void setHistory(String history) {
this.history = history;
}
}
比build之前多了构造方法和set,get方法
另外自动生成了DaoMaster,DaoSession,HistoryDataDao三个类
注解解释
@Entity:告诉GreenDao该对象为实体,只有被@Entity注释的Bean类才能被dao类操作
@Id:对象的Id,使用Long类型作为EntityId,否则会报错。(autoincrement = true)表示主键会自增,如果false就会使用旧值
@Property:可以自定义字段名,注意外键不能使用该属性
@NotNull:属性不能为空
@Transient:使用该注释的属性不会被存入数据库的字段中
@Unique:该属性值必须在数据库中是唯一值
@Generated:编译后自动生成的构造函数、方法等的注释,提示构造函数、方法等不能被修改
第三步 创建数据库
public class MyApplication extends Application{
private static MyApplication mApp;
private static DaoSession mDaoSession;
@Override
public void onCreate() {
super.onCreate();
mApp = this;
//配置数据库
initGreenDao();
}
private void initGreenDao() {
//创建数据库mydb.db
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(mApp,"mydb.db");
//获取可写数据库
SQLiteDatabase database = helper.getWritableDatabase();
//获取数据库对象
DaoMaster daoMaster = new DaoMaster(database);
//获取Dao对象管理者
mDaoSession = daoMaster.newSession();
}
public static DaoSession getmDaoSession(){
return mDaoSession;
}
}
可以发现,GreenDao已经将我们的数据库创建缩成几句话,代码会自动将实体类对象创建成表,不再是传统的手写SQL语句。这里的数据库创建只需要在MyApplication中执行一次即可,这里对几个类进行解释
DevOpenHelper:创建SQLite数据库的SQLiteOpenHelper的具体实现
DaoMaster:GreenDao的顶级对象,作为数据库对象、用于创建表和删除表
DaoSession:管理所有的Dao对象,Dao对象中存在着增删改查等API
由于我们已经创建好了DaoSession和HistoryData的实体类对象,编译后会自动生成我们的HistoryDataDao对象,可通过DaoSession获得
HistoryDataDao historyDataDao = daoSession.getHistoryDataDao();
这里的Dao(Data Access Object)是指数据访问接口,即提供了数据库操作一些API接口,可通过dao进行增删改查操作
第四步 数据库的增删改查
后续更新...