- GreenDao开源库介绍
greenDao开源库官网
简单来讲,它是SQLite数据库与Java对象之间的桥梁,类似于Mybatis在SSM框架中的功能。简化了数据库的创建,编写,修改,升级等工作。是相对高效的ORM框架。 - GreenDao开源库配置
2.1 app/build.gradle
apply plugin: 'org.greenrobot.greendao'
greendao {
schemaVersion 1//数据库版本号
daoPackage 'dao'//设置DaoMaster、DaoSession、Dao包名
targetGenDir 'src/main/java/'//设置DaoMaster、DaoSession、Dao目录
}
dependencies {
compile 'org.greenrobot:greendao:3.2.0'
}
2.2 project/build.gradle
```
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
}
2.3 在dao目录下可以创建JavaBean对象,然后rebuild project就会在targetGenDir 目录下创建相应的操作数据库的文件,分别为DaoMaster,DaoSession,JavaBeanDao文件。
- GreenDao开源库使用
1.创建GreenDaoManager单例类
package com.example.administrator.greendaotest;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import org.greenrobot.greendao.query.QueryBuilder;
import java.util.List;
import dao.DaoMaster;
import dao.DaoSession;
import dao.HistoryData;
import dao.HistoryDataDao;
public class GreenDaoManager {
private static volatile GreenDaoManager instance;
private Context context;
private DaoMaster.DevOpenHelper devOpenHelper;
private final static String dbName = "history_db";
private GreenDaoManager(Context context) {
this.context = context;
devOpenHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
}
public static GreenDaoManager getInstance(Context context) {
if (instance == null) {
synchronized (GreenDaoManager.class) {
if (instance == null) {
return new GreenDaoManager(context);
}
}
}
return instance;
}
private SQLiteDatabase getReadableDatabase() {
if (devOpenHelper == null) {
devOpenHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
}
SQLiteDatabase database = devOpenHelper.getReadableDatabase();
return database;
}
private SQLiteDatabase getWriteableDatabase() {
if (devOpenHelper == null) {
devOpenHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
}
SQLiteDatabase database = devOpenHelper.getWritableDatabase();
return database;
}
private HistoryDataDao getHistoryDataDao(SQLiteDatabase database) {
DaoMaster daoMaster = new DaoMaster(database);
DaoSession daoSession = daoMaster.newSession();
return daoSession.getHistoryDataDao();
}
public void insertHistoryData(HistoryData historyData) {
HistoryDataDao historyDataDao = getHistoryDataDao(getWriteableDatabase());
try {
historyDataDao.insert(historyData);
} catch (Exception e) {
e.printStackTrace();
}
}
public List<HistoryData> getHistoryData(){
HistoryDataDao dataDao = getHistoryDataDao(getReadableDatabase());
QueryBuilder queryBuilder = dataDao.queryBuilder();
return queryBuilder.list();
}
}
- 在UI控件中创建manager对象实例,作为操作数据库的唯一入口
- GreenDao开源库源码分析