安卓数据库 greenDAO3 使用之一项目配置及增删改查

博客: 安卓之家
掘金: jp1017
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917

每日一景

Build Status

配置


喜讯:现在greenDAO升级到了3.0版本,不需要java项目了

强烈建议升级到3.0版本,该版本采用注解的方式通过编译生成Java数据对象和DAO对象,配置更简单

之前2.0版本的配置也写过,参考这里:Android SQLite ORM框架greenDAO在Android Studio中的配置与使用

1 添加依赖


项目的gradle脚本:

1
2
3
4
5
6
7
8
9
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.1.0'
}
}

module的gradle:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'

android {
compileSdkVersion 24
buildToolsVersion "24.0.3"

defaultConfig {
applicationId "com.inst.greendao3_demo"
minSdkVersion 14
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

//greendao配置
greendao {
schemaVersion 1 //版本号,升级时可配置
daoPackage'com.inst.greendao3_demo.dao' //包名
targetGenDir'src/main/java' //生成目录
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'org.greenrobot:greendao:3.1.1'
}

可以看到,3.0多了个greendao插件,直接在这里配置实体及DAO生成目录,我的配置是:

1
2
3
4
5
greendao {
schemaVersion 1 //版本号,升级时可配置
daoPackage'com.inst.greendao3_demo.dao' //包名
targetGenDir'src/main/java' //生成目录
}

这三个字段的意思是:

schemaVersion: 数据库schema版本,可在这里升级数据库版本
daoPackage:设置DaoMaster、DaoSession、Dao包名
targetGenDir:设置DaoMaster、DaoSession、Dao目录

配置好后,同步下,然后编译,就会生成 Dao。

2 添加实体类


我这里的是Student实体类,和普通的bean有个区别,添加 @Entity 注解

1
2
3
4
5
6
7
8
9
10
@Entity
public class Student {

@Id
public Long id;
public String name;
public String age;
public String number;
public String score;
}

注意到,变量 id 添加了 @Id 注解,这个就是主键了

注意: id 的类型是 Long, 不要写成 long,否则会出现主键不能相同等异常

生成DAO


上面配置好后,同步,编译,即可自动生成DAO, 并自动补全实体类 Student 的getter setter 等方法。

增删改查


上面的操作就完成了数据库的创建,下面开始对数据库操作,常用的增删改查。

这里对基本操作封装下,参考这里:Android ORM系列之GreenDao最佳实践

1 编写一个核心辅助类DbCore, 用于获取DaoMaster和DaoSession

1
2
3
4
5
6
7
8
public static DaoMaster getDaoMaster() {
if (daoMaster == null) {
//此处不可用 DaoMaster.DevOpenHelper, 那是开发辅助类,我们要自定义一个,方便升级
DaoMaster.OpenHelper helper = new MyOpenHelper(mContext, DB_NAME);
daoMaster = new DaoMaster(helper.getWritableDatabase());
}
return daoMaster;
}

这里需要注意的是 getDaoMaster 时的 helper 不可用 DaoMaster.DevOpenHelper,我们需要自定义一个:

因为该类这样提示我们:

/* WARNING: Drops all table on Upgrade! Use only during development. /
public static class DevOpenHelper extends OpenHelper

也就是开发中使用的助手,自定义也很简单:

1
2
3
4
5
public class MyOpenHelper extends DaoMaster.OpenHelper {
public MyOpenHelper(Context context, String name) {
super(context, name);
}
}

2 基础的泛型 BaseDbHelper, 封装基本增删改查方法,具体看代码吧

3 实现类,有几个实体类就有几个实现类,这里是 StudentHelper, 仅仅一个构造方法即可

4 一个工具类 DbUtils 获得 Helper

5 在 application 里初始化

1
2
3
4
5
6
7
8
9
public class DaoApplication extends Application {
@Override
public void onCreate() {
super.onCreate();

//初始化数据库
DbCore.init(this);
}
}

6 测试

方法就很简单了,获取 helper, 然后 add remove update query

1
2
3
4
5
6
7
8
9
10
11
12
13
14
StudentHelper mHelper = DbUtil.getDriverHelper();
//增加一个数据
mFastAdapter.add(stu);
//删除一个数据
mFastAdapter.remove(stu);
//更新一个数据
mFastAdapter.update(stu);
//查找所有数据
mFastAdapter.queryAll();
//查找数据库中age大于20的数据
Query<Student> query = mHelper.queryBuilder()
.where(StudentDao.Properties.Age.ge("20"))
.build();
dbStudents = query.list();

运行程序,添加几个数据,我们看下界面及数据库内容:

升级


请参考下一篇文章:安卓数据库 greenDAO3 使用之二数据库升级

代码已上传至 GitHub:GreenDAO3_Demo

最后,非常感谢您的阅读,有任何疑问,可以后面评论,谢谢!

神奇的安卓开发网站:http://androidcat.com/

安卓开源库收集整理:https://github.com/XXApple/AndroidLibs

分享是一种美德,更是一种生活方式!!

也许你会说我是一个梦想者,但我不是唯一的一个。

悦分享,越快乐^_^

欢迎交流,转载请注明出处,谢谢!

文章目錄
  1. 1. 配置
    1. 1.1. 1 添加依赖
    2. 1.2. 2 添加实体类
    3. 1.3. 生成DAO
  2. 2. 增删改查
  3. 3. 升级
,
Fork me on GitHub