1、greenDAO3的基本介绍:
greenDAO3使用注解的方式定义实体类(entity),并且是通过安装gradle插件来生成代码。之前的版本则是通过建立一个独立的java工程来存放生成的文件。
2、greenDAO3的配置:
①在gradle的dependencies中导入最新版本的依赖:
compile 'org.greenrobot:greendao:3.0.1'
compile 'org.greenrobot:greendao-generator:3.0.0'
②配置gradle:gradle会自动去maven仓库下载一个gradle的插件,用来生成数据库相关的代码
apply plugin: 'org.greenrobot.greendao'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
}
}
③每次Make Project的时候,greenDAO回去扫描项目中的所有的@Entity的文件(所有的greenDAO中数据库的实体类),根据实体类生成DaoSession,DaoMaster以及所有实体类的Dao类,生成的默认目录是:build/generated/source/greendao,可以将该路径下生成的文件放到所需要的目录下。若不想移动生成的文件,则可以在gradle中自定义文件生成的路径:
greendao {
schemaVersion 1
daoPackage 'com.wyk.greendaodemo.greendao.gen'
targetGenDir 'src/main/java'
}
3、greenDao3的使用:
①编写实体文件:
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Transient;
@Entity
public class User {
@Id
private Long id;
private String name;
@Transient
private int tempUsageCount; // not persisted
}
注解解释:
@Entity:将普通的java文件变成一个能够被greenDAO识别的数据库类型的实体类。
@Id:通过这个注解标记的字段必须是Long类型的,这个字段在数据库中表示它就是默认自增的。
@Transient:表示这个字段不会被写入数据库,只是作为普通的java类字段,用来临时存储数据,不会被持久化。
②编写实体文件后,点击MakeProject,greenDAO3会自动生成一些文件。(User中的get,set方法和一些构造函数,还生成了DaoMaster,DaoSession,UserDao)
③初始化数据库:
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(MyApplication.getContext(),"otes-db",null);
DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());
DaoSession daoSession = daoMaster.newSession();
UserDao userDao = daoSession.getUserDao();
④插入数据:
User user = new User(null,"yangxy");
userDao.insert(user);
⑤查找数据:
List<User> userList = userDao.queryBuilder()
.where(UserDao.Properties.Id.notEq(999))
.orderAsc(UserDao.Properties.Id)
.limit(5)
.build().list();
⑥修改数据:修改数据的第一步是要把需要修改的条目给查出来,然后修改该条目,最后调用userDao的update方法。
User findUser = userDao.queryBuilder().where(UserDao.Properties.Name.eq("wyk")).build().unique();
if(findUser != null) {
findUser.setName(newName);
userDao.update(findUser);
Toast.makeText(MyApplication.getContext(), "修改成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MyApplication.getContext(), "用户不存在", Toast.LENGTH_SHORT).show();
}
⑦删除数据:先查询出需要删除的条目,然后调用userDao的deleteByKey将该条目的主键传入即可删除。
User findUser = userDao.queryBuilder().where(UserDao.Properties.Name.eq("wyk")).build().unique();
if(findUser != null){
userDao.deleteByKey(findUser.getId());
}
4、数据库的升级:
如果某张表修改了字段,或者新建了一张表,需要将build.gradle中的schemaVersion,否则当升级APP
网友评论