關(guān)于greenDAO,看這篇文章就夠了

一、greenDAO簡介

greenDAO是一款開源的面向 Android 的輕便、快捷的 ORM 框架,將 Java 對(duì)象映射到SQLite數(shù)據(jù)庫中,我們操作數(shù)據(jù)庫的時(shí)候,不再需要編寫復(fù)雜的 SQL語句, 在性能方面,greenDAO針對(duì) Android 進(jìn)行了高度優(yōu)化, 最小的內(nèi)存開銷 、依賴體積小 同時(shí)還是支持?jǐn)?shù)據(jù)庫加密。

greenDAO.jpeg

greenDAO項(xiàng)目地址:https://github.com/greenrobot/greenDAO

二、greenDAO特征

1、對(duì)象映射( ORM)
greenDAO是ORM 框架,可以非常便捷的將Java 對(duì)象映射到 SQLite 數(shù)據(jù)庫中保存。
2、 高性能
ORM 框架有很多,比較著名的有 OrmLite , ActiveAndroid 等
greenDAO官方給出了這三者的性能對(duì)比。


greenDAO、OrmLite、ActiveAndroid

3、支持加密

三、greenDAO集成

1、設(shè)置倉庫與插件(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 plugin
dependencies {
    implementation 'org.greenrobot:greendao:3.2.2' // add library
}

3、配置數(shù)據(jù)庫相關(guān)信息 ( Module:app build.gradle )

android {
    greendao {
        //版本號(hào),升級(jí)時(shí)可配置
        schemaVersion defaultConfig.versionCode
        daoPackage 'xxx.xxx.xxx.xxx'
        targetGenDir 'src/main/java'
    }
}

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

四、greenDAO注解解釋

1、@Entity
表明這個(gè)實(shí)體類會(huì)在數(shù)據(jù)庫中生成一個(gè)與之相對(duì)應(yīng)的表
schema:告知greenDAO當(dāng)前實(shí)體屬于哪個(gè) schema
schema active:標(biāo)記一個(gè)實(shí)體處于活躍狀態(tài),活動(dòng)實(shí)體有更新、刪除和刷新方法
nameInDb:在數(shù)據(jù)庫中使用的別名,默認(rèn)使用的是實(shí)體的類名,
indexes:定義索引,可以跨越多個(gè)列
createInDb:標(biāo)記創(chuàng)建數(shù)據(jù)庫表(默認(rèn):true)
generateConstructors 自動(dòng)創(chuàng)建全參構(gòu)造方法(同時(shí)會(huì)生成一個(gè)無參構(gòu)造方法)(默認(rèn):true)
generateGettersSetters 自動(dòng)生成 getters and setters 方法(默認(rèn):true)

2、@Id
對(duì)應(yīng)數(shù)據(jù)表中的 Id 字段
3、@Index
使用@Index作為一個(gè)屬性來創(chuàng)建一個(gè)索引,默認(rèn)是使用字段名
4、@Property
設(shè)置一個(gè)非默認(rèn)關(guān)系映射所對(duì)應(yīng)的列名,默認(rèn)是使用字段名
5、@NotNull
設(shè)置數(shù)據(jù)庫表當(dāng)前列不能為空
6、@Transient
添加此標(biāo)記后不會(huì)生成數(shù)據(jù)庫表的列
7、@Unique
表名該屬性在數(shù)據(jù)庫中只能有唯一值
8、@ToOne
表示一對(duì)一關(guān)系
9、@ToMany
定義一對(duì)多個(gè)實(shí)體對(duì)象的關(guān)系
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;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容