GreenDao的简单使用
GreenDao是一个开源的基于SQLite数据库ORM(对象关系映射).我们在使用SQLite进行数据的缓存与读取,需要自己书写CRUD语句,还要将读取的数据进行转化为java对象,亦或者将java对象转化为数据库存储的一条条记录,这对于不是很熟悉SQL语句的android开发者来说实属不易.当然GreenDao存在的更大的意义是,通过简单的几行代码,就能够自动完成java对象与数据库表之间的链接,从而大大的节省了开发者的时间
特性
- 最好用的安卓ORM工具
- 强大的APIs支持
- 很小的内存开销
- 引入的jar包体积很小
- 使用了SQLCipher,保证数据库数据安全
- 其他不用多说了,使用的人多了,自然性能是经得起考验的
具体使用(greendao版本为:3.2.2,使用的IDE为AndroidStudio)
1.在build.gradle(app)下引入库的依赖
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // 生成一个module(library)
android {
......
}
//初始化数据库
greendao {
schemaVersion 1 //数据库版本
daoPackage 'com.leer.greendaotest.gen'//生成的DAOs, DaoMaster, 和DaoSession存放的包名
targetGenDir 'src/main/java' //上面的daoPackage在工程中存放的位置
}
dependencies {
......
compile 'org.greenrobot:greendao:3.2.2' // 添加greendao的jar包依赖,会自动进行下载
}
2.在build.gradle(project)下添加greendao插件依赖
buildscript {
repositories {
jcenter()
}
dependencies {
......
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // 添加插件
}
}
3.创建数据库当中的表(table)对应的实体(Entity)
@Entity
public class Student {
@Id(autoincrement = true)
private Long id;
@Property
private String studentName;
@Property(nameInDb = "sex")
private String studentSex;
@Transient
private String isChecked;
}
- @Entity:代表Student类映射到数据库当中的一个表,表名叫做”Student”;其实我们可以换个角度来看,每张表下面都是一条条的记录,每一条记录包含了单个Student的各种属性,那么一个Student对象就映射到数据库Student表下面的一条条记录.
- @Id:对应主键,autoincrement = true,代表自增长,在向数据库中插入值得时候我们不必要为这个字段赋值
- @Property:顾名思义,就是属性,相当于表中的一个个列名,当然Id也是列,只是它是主键列;nameInDb = “sex”:数据库当中的sex对应于实体类当中的studentSex;
- @Transient:这个字段不会被写入到数据库,只是作为一个普通的java字段用来临时存储数据的,不会被持久化存到数据库当中去
- 对应的注解还有好多,这里只罗列一些简单常常用到的
- 更多注解说明请移步:http://m.blog.csdn.net/kongxingxing/article/details/5205233
使用
准备工作已经都准备完了,接下来该使用了.使用很简单—-> build -> Make Project,接下来神奇的事情发生了,看看你的项目目录:
点击Make Project之前:
点击Make Project之后:
可以看到多了三个自动生成的类:DaoMaster、DaoSession、StudentDao
这三个类有什么用呢:
- DaoMaster : 包含一个继承自 OpenHelper 的内部类,完成对数据库的创建,更新;创建数据库当中的表(table)等等;又被称作会话层,和SQLiteDatabase进行会话
- DaoSession : 管理Daos的class文件;也包含了一些基础的增删改查的方法
- XXXDao : 数据访问对象,每一张表格对应一个Entity实体类,dao就是访问一张具体表 格下面的数据的对象
DaoMaster.DevOpenHelper openHelper = new DaoMaster.DevOpenHelper(this, "students.db",null);
Database database = openHelper.getWritableDataBase();
//将database传入daomaster创建daomaster对象
DaoMaster daoMaster = new DaoMaster(database);
//创建DaoSession对象,其实通过DaoSession对象,我们也可以完成对数据的增删改查了,但是利用XXXDao对象,方法会更加的全面
DaoSession daoSession = daoMaster.newSession();
//获取每一张表格的数据访问对象
StudentDao studentDao = daoSession.getStudentDao();
Student student = new Student();
student.id = 1001;
student.name = 张三;
student.sex = male;
//插入数据
studentDao.insert(student);
StudentDao还有update(),delete(),query()等等的方法,如需了解更多,请查看我的 GreenDao的简单使用2 就先写到这里了..