Android实战

GreenDao使用

2018-05-09  本文已影响647人  sweetying

前言

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三个类

注解解释

  1. @Entity:告诉GreenDao该对象为实体,只有被@Entity注释的Bean类才能被dao类操作

  2. @Id:对象的Id,使用Long类型作为EntityId,否则会报错。(autoincrement = true)表示主键会自增,如果false就会使用旧值

  3. @Property:可以自定义字段名,注意外键不能使用该属性

  4. @NotNull:属性不能为空

  5. @Transient:使用该注释的属性不会被存入数据库的字段中

  6. @Unique:该属性值必须在数据库中是唯一值

  7. @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中执行一次即可,这里对几个类进行解释

由于我们已经创建好了DaoSession和HistoryData的实体类对象,编译后会自动生成我们的HistoryDataDao对象,可通过DaoSession获得

 HistoryDataDao historyDataDao = daoSession.getHistoryDataDao();

这里的Dao(Data Access Object)是指数据访问接口,即提供了数据库操作一些API接口,可通过dao进行增删改查操作

第四步 数据库的增删改查

后续更新...

上一篇 下一篇

猜你喜欢

热点阅读