介绍
GreenDao是一个开源的 Android ORM嵌入式关系数据库,通过将 Java 对象映射到数据库表(称为 ORM,“对象/关系映射”) ,使用一个简单的面向对象的 API 来存储、更新、删除和查询 Java 对象。
GreenDao特点
最佳性能 (可能是 Android 中最快的 ORM) ,基准测试也是开源的;
易于使用的功能强大的 api,涵盖关系和连接;
最小的内存消耗;
小型库大小(< 100KB) ,以保持较低的构建时间,并避免65k 方法限制;
数据库加密:greenDAO 支持 SQLCipher 来保证用户数据的安全;
强大而活跃的社区交流支持。
项目配置
项目目录下.gradle文件配置:
buildscript {
repositories {
google()
jcenter()
// GreenDao仓库
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.4'
// GreenDao插件
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}
}
app目录下.gradle配置
apply plugin: 'com.android.application'
//GreenDao插件
apply plugin: 'org.greenrobot.greendao'
dependencies {
//GreenDao依赖添加
implementation 'org.greenrobot:greendao:3.2.2'
}
greendao {
// 数据库版本号
schemaVersion 1
// 生成数据库文件的目录
targetGenDir 'src/main/java'
// 生成的数据库相关文件的包名
daoPackage 'com.nianlun.greendao.gen'
}
使用说明
1、 首先新建用户实体类,如下:
@Entity
public class User {
@Id(autoincrement = true)
private Long id;
@Unique
private String userId;
@Property
private String userName;
@Property
private int age;
}
实体类中详细注解说明:
@Entity:表明这个实体类会在数据库中生成一个与之相对应的表,其中可配置项:
nameInDb:可以自定义表名,表明该实体对应数据库中的那张表,默认为实体类名;
indexes:定义索引,这里可跨越多个列;
createInDb:如果是有多个实体都关联这个表,可以把多余的实体里面设置为false避免重复创建(默认是true);
schema:一个项目中有多个schema时,表明要让这个dao属于哪个schema;
active:是否应该生成更新/删除/刷新方法。如果Entity定义了 @ToOne 或 @ToMany关系,那么独立于该值是有效的。意为是否支持实体类之间update,refresh,delete等操作。
@Id:对应数据表中的主键,是一条数据的唯一标识。如果实体没有声明主键,默认创建Long类型主键"_id"自增。使用Long类型主键时可以通过@Id(autoincrement = true)设置为自增。
@Property(nameInDb = "USER_NAME" ):可以自定义字段名