个人理解:安卓的数据库SQLite需要拼写很多的sql语句,相当的麻烦,还很容易出错,所以找到了一些主流的框架,比如说:realm和greendao。今天主要是讲述下greendao在android studio上的相关配置和使用。
首先介绍下其在studio上的配置,如下代码(本人的studio的版本是2.1.2):
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
***classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'***
}
}
这个代码片段是在安卓项目的project的gradle文件下面配置的。
然后新建一个java项目,在新建的java项目的gradle文件下面添加依赖库
compile 'de.greenrobot:greendao-generator:2.1.0'
然后编写相关的代码:
public class MyClass {
public static void main(String[] args) {
//www.wx.com为创建的代码的包名
Schema schema = new Schema(1, "www.wx.com");
//建立表名为Son的数据库
Entity son = schema.addEntity("Son");
//增加主键
son.addIdProperty();
son.addStringProperty("name");
son.addIntProperty("age");
Property fatherId = son.addLongProperty("fatherId").getProperty();
//建立表名为Father的数据库
Entity father = schema.addEntity("Father");
father.addIdProperty();
father.addStringProperty("name");
father.addIntProperty("age");
//将Son和Father的表相关联
son.addToOne(father, fatherId);
try {
//greendao/src/main/java为创建代码的目录
new DaoGenerator().generateAll(schema, "greendao/src/main/java");
} catch (Exception e) {
e.printStackTrace();
}
}
}
然后运行你的java项目,你会发现在你的安卓项目的”greendao/src/main/java”的目录下面会生成“www.wx.com”的包,然后下面会出现相关创建的代码。但是你会发现生成的代码会报错,不用担心,那是因为你没有添加依赖的原因。
然后介绍下在安卓项目的配置:首先打开你的module所在的gradle文件,添加如下的依赖:
compile 'de.greenrobot:greendao-generator:2.1.0'
compile 'de.greenrobot:greendao:2.1.0'
这样相关的配置基本结束,下面就是greendao数据库的相关代码的编写和一些基本的操作。
public static final String TAG = "MainActivity";
private DaoMaster master;
private DaoSession session;
private SQLiteDatabase db;
private SonDao sonDao;
private FatherDao fatherDao;
private void openDB() {
db = new DaoMaster.DevOpenHelper(MainActivity.this, "person.db", null).getWritableDatabase();
master = new DaoMaster(db);
session = master.newSession();
sonDao = session.getSonDao();
fatherDao = session.getFatherDao();
}
//插入
private void addPerson() {
Son son = new Son();
son.setName("me");
son.setAge(23);
Father father = new Father();
father.setName("ton");
father.setAge(51);
long fatherId = fatherDao.insert(father);
son.setFatherId(fatherId);
sonDao.insert(son);
}
//查询
public void query() {
LazyList<Son> sonList = sonDao.queryBuilder().listLazy();
Log.e(TAG, "" + sonList.size());
for (Son son : sonList) {
Log.e(TAG, String.valueOf(son));
}
}
本博文主要介绍了greenDAO 的基本用法与配置,更高级与详细的使用,请参见 官网