greenDao基础使用

greenDao官方文档中介绍,其效率要优于其他几个ORM框架,也有小伙伴验证过,其效率确实挺不错。所以greenDao还是有必要学一学的。毕竟只是用AndroidSQLiteOpenHelper效率不是低了一丁点。在学习了greenDao之后感觉还是蛮好用的。在这里记录下使用方法。

集成

在一开始学习的使用,查看官方文档。没有找到greenDao的完成配置方式。可能是我不够细心。下面是完全的greedDao的配置。想要查看配置的请点这里
build.gradle文件中添加:

1
2
3
4
5
6
7
8
9
10
11
apply plugin: 'org.greenrobot.greendao'
greendao {
schemaVersion 1
daoPackage 'xyz.magicer.greendaodemo.dao' //包名
targetGenDir 'src/main/java' //生成目录
}
compile 'org.greenrobot:greendao:3.2.0'
compile 'org.greenrobot:greendao-generator:3.2.0'

在项目中的build.gradle中添加

1
2
3
4
5
6
7
8
9
10
11
12
13
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
}
}

使用

官方文档中关于部分注解的说明:点这里

创建entity文件

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
@Entity
public class User {
@Id
private long id;
private String name;
private int age;
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
}

编译

编译一下工程之后就会生成DaoMasterDaoSessionUserDao三个文件。

使用

一个简单的使用实例如下。

1
2
3
4
5
6
7
8
9
10
11
DaoMaster.DevOpenHelper openHelper = new DaoMaster.DevOpenHelper(this, "user.db", null);
DaoMaster daoMaster = new DaoMaster(openHelper.getWritableDatabase());
DaoSession daoSession = daoMaster.newSession();
UserDao userDao = daoSession.getUserDao();
User user = new User(0, "zhang3", 19);
userDao.insert(user);
List<User> magicer= userDao.queryBuilder().where(UserDao.Properties.Name.eq("magicer"))
.orderDesc()
.build()
.list();

ClassCastException

Schema.java

1
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

参考