一、greenDAO简介

greenDAO是一款开源的面向 Android 的轻便、快捷的 ORM 框架,将 Java 对象映射到SQLite数据库中,我们操作数据库的时候,不再需要编写复杂的 SQL语句, 在性能方面,greenDAO针对 Android 进行了高度优化, 最小的内存开销 、依赖体积小 同时还是支持数据库加密。

greenDAO.jpeg
greenDAO项目地址: https://github.com/greenrobot/greenDAO

二、greenDAO特征

1、对象映射( ORM)
greenDAO是ORM 框架,可以非常便捷的将Java 对象映射到 SQLite 数据库中保存。
2、 高性能
ORM 框架有很多,比较著名的有 OrmLite , ActiveAndroid 等
greenDAO官方给出了这三者的性能对比。


greenDAO、OrmLite、ActiveAndroid

3、支持加密

三、greenDAO集成

1、设置仓库与插件(Project: build.gradle)

    repositories {        jcenter()        mavenCentral() // add repository    }    dependencies {        classpath 'com.android.tools.build:gradle:3.1.1'        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin    }}

2、配置依赖 ( Module:app build.gradle )

apply plugin: 'com.android.application'apply plugin: 'org.greenrobot.greendao' // apply plugindependencies {    implementation 'org.greenrobot:greendao:3.2.2' // add library}

3、配置数据库相关信息 ( Module:app build.gradle )

android {    greendao {        //版本号,升级时可配置        schemaVersion defaultConfig.versionCode        daoPackage 'xxx.xxx.xxx.xxx'        targetGenDir 'src/main/java'    }}

4、Sync Project with Gradle Files 同步工程 即可

四、greenDAO注解解释

1、@Entity
表明这个实体类会在数据库中生成一个与之相对应的表
schema:告知greenDAO当前实体属于哪个 schema
schema active:标记一个实体处于活跃状态,活动实体有更新、删除和刷新方法
nameInDb:在数据库中使用的别名,默认使用的是实体的类名,
indexes:定义索引,可以跨越多个列
createInDb:标记创建数据库表(默认:true)
generateConstructors 自动创建全参构造方法(同时会生成一个无参构造方法)(默认:true)
generateGettersSetters 自动生成 getters and setters 方法(默认:true)

2、@Id
对应数据表中的 Id 字段
3、@Index
使用@Index作为一个属性来创建一个索引,默认是使用字段名
4、@Property
设置一个非默认关系映射所对应的列名,默认是使用字段名
5、@NotNull
设置数据库表当前列不能为空
6、@Transient
添加此标记后不会生成数据库表的列
7、@Unique
表名该属性在数据库中只能有唯一值
8、@ToOne
表示一对一关系
9、@ToMany
定义一对多个实体对象的关系
10、@OrderBy
更加某一字段排序 ,例如:@OrderBy("date ASC")

5、demo

@Entity(nameInDb = "tb_user")public class UserEntity {    @Id    private Long id;    @Property(nameInDb = "username")    private String username;    @Property(nameInDb = "password")    private String password;    @Property(nameInDb = "sex")    private int sex;    @Property(nameInDb = "birthday")    private Date birthday;

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. Android(安卓)使用SQLiteDatabase操作SQLite数据库
  3. android中SQLite使用查看
  4. Android(安卓)MediaScanner:(四)MediaScanner之scanSingleFile
  5. Android(安卓)SugarORM(1)
  6. android 下 数据持久化
  7. 解决WebView加载Https无法显示的问题
  8. android设置默认程序
  9. android toast使用总结

随机推荐

  1. Netty UDP Server&Client
  2. 万能 dao 增删改查一个方法搞定
  3. android自定义View绘制几何图形
  4. 123123
  5. android定位服务:查看位置源及其属性
  6. Caused by: java.lang.IllegalStateExcep
  7. 读取seekbar的值
  8. Errors during Android(安卓)Kernel buil
  9. Android(安卓)vibrate+ 振动
  10. 圆角ImageView的几种实现方法