greenDAO简介
greenDAO是一款开源的面向 Android 的轻便、快捷的 ORM 框架,将 Java 对象映射到SQLite数据库中,我们操作数据库的时候,不再需要编写复杂的 SQL语句, 在性能方面,greenDAO针对 Android 进行了高度优化, 最小的内存开销 、依赖体积小 同时还是支持数据库加密。
ORM 框架有很多,比较著名的有 OrmLite , ActiveAndroid 等
greenDAO项目地址:https://github.com/greenrobot/greenDAO
视频讲解链接
https://www.bilibili.com/video/BV1Qt4y117Up
greenDAO集成
第一步 在项目的build.gradle 文件中配置classpath
buildscript {
apply from: 'script.gradle', to: buildscript
repositories {
jcenter()
maven {
url 'https://maven.google.com'}
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
第二步 在app的build.gradle 文件中引入greenDao插件
apply plugin: 'org.greenrobot.greendao'
第三步 在app的build.gradle 文件中导入greenDao依赖包
implementation 'org.greenrobot:greendao-generator:3.2.2'
第四步 在app的build.gradle 文件中配置数据库相关信息
android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
greendao {
schemaVersion 1//数据库版本号
daoPackage 'cn.***.greendao'//设置DaoMaster、DaoSession、Dao包名
targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录
//targetGenDirTest:设置生成单元测试目录
//generateTests:设置自动生成单元测试用例
}
}
这样greenDao就集成好了,下面我们就看怎么使用greenDao.
greenDao的使用
1,新建实体类
新建一个实体类,对整个实体类使用注解 @Entity
@Entity public class Student { }
接下来添加类的属性
@Entity
public class Student {
@Id //@id 是设置主键,我们用Long类型是可以使主键id自增
private Long id;
//@Preoerty这个是数据库表的列名,nameInDb = "student_name" 是指表中的列名为“student_name
@Property(nameInDb = "student_name")
private String studentName;;
}
类的属性写好之后,这个时候我们只需要编译一下代码greenDao 会自动创建类的get、set方法和构造方法,同时会在我们配置的greendao的文件中自动生成DaoMaster、DaoSession和StudentDao.
这里需要记住,如果你不是第一次新增类的话,在新增完之后是要升级我们greendao配置文件中,我们的数据库版本号的,负责可能会报错,这个时候我们只需要把 schemaVersion 它的值加一就可以了
schemaVersion 1//数据库版本号
接着我们在green_dao这个包下面新建一个DaoManager的类,方便获取我们的DaoSession,让我们使用起来更方便,快捷!一下是我们DaoManager的代码。
public class DaoManager {
private Context mContext;
//创建数据库的名字
private static final String DB_NAME = "aaa.db";
//多线程中要被共享的使用volatile关键字修饰 GreenDao管理类
private volatile static DaoManager mInstance;
//它里边实际上是保存数据库的对象
private static DaoMaster mDaoMaster;
//创建数据库的工具
private static DaoMaster.DevOpenHelper mHelper;
//管理gen里生成的所有的Dao对象里边带有基本的增删改查的方法
private static DaoSession mDaoSession