Android數(shù)據(jù)庫(kù)框架GreenDao 3.2.2

android數(shù)據(jù)庫(kù)框架主流開源的有:OrmLite篡诽、greenDAO 崖飘、Realm、DBFlow杈女、LitePal朱浴,優(yōu)缺點(diǎn)自行百度吊圾。
沒有最好,只有最合適翰蠢,我這選擇社區(qū)活躍项乒、star高的greenDAO,個(gè)人比較喜歡使用最新版來搞
2020年4月5日20:18:05最新版版GreenDao 3.2.2梁沧,可以算是最新的了吧檀何?
部分參考官網(wǎng)文檔https://greenrobot.org/greendao/
官方git:https://github.com/greenrobot/greenDAO

開發(fā)環(huán)境工具

jdk8 + android studio 3.6(新) + GreenDao 3.2.2

一廷支、集成插件

集成greendao-gradle-plugin插件用于自動(dòng)生成dao映射等等
在build.gradle中:classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'

buildscript {
    
    repositories {
        // 添加阿里云 maven 地址
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
        google()
        jcenter()
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.1'
        // 添加以下插件
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

配置依賴

在app/build.gradle中:

//頂部添加
apply plugin: 'org.greenrobot.greendao' // apply plugin

//加入依賴
//sql
implementation 'org.greenrobot:greendao:3.2.2' // add library

//最下面加入配置
greendao{
    schemaVersion 1
    // 注意配置你的dao生成包
    daoPackage 'com.lingkang.flychat.mapper.gen'
    targetGenDir 'src/main/java'
}
//schemaVersion: 數(shù)據(jù)庫(kù)schema版本频鉴,也可以理解為數(shù)據(jù)庫(kù)版本號(hào)
//daoPackage:設(shè)置DaoMaster、DaoSession恋拍、Dao包名
//targetGenDir:設(shè)置DaoMaster垛孔、DaoSession、Dao目錄
//targetGenDirTest:設(shè)置生成單元測(cè)試目錄
//generateTests:設(shè)置自動(dòng)生成單元測(cè)試用例

此處注意下dao生成的包路徑即可施敢,我的是com.lingkang.flychat.mapper.gen

二周荐、創(chuàng)建entity

@Entity
public class User {
    @Id
    private Long id;
    private int memberSex;//性別
    private String memberLastX;//X幣
    @Property(nameInDb = "sex")
    private String memberNickname;//昵稱
    private String memberIcon;//頭像地址鏈接
    private String memberMobile;//手機(jī)號(hào)
    private int memberId;//用戶ID
    @Transient
    private String memberDetailAddr;//用戶的詳細(xì)地址
    private String memberLastExperience;//用戶經(jīng)驗(yàn)值
    private String memberLevelName;//用戶等級(jí)昵稱
    private long memberBirthday;//用戶生日
    private String memberProvince;//用戶所在地
}

@Id-- 主鍵 Long型,可以通過@Id(autoincrement = true)設(shè)置自增長(zhǎng)悯姊。通過這個(gè)注解標(biāo)記的字段必須是Long羡藐,數(shù)據(jù)庫(kù)中表示它就是主鍵,并且默認(rèn)是自增的悯许。
@Property-- 設(shè)置一個(gè)非默認(rèn)關(guān)系映射所對(duì)應(yīng)的列名仆嗦,默認(rèn)是的使用字段名 舉例:@Property (nameInDb="name")
@Index-- 使用@Index作為一個(gè)屬性來創(chuàng)建一個(gè)索引;定義多列索引(@link Entity#indexes())
@Transient-- 添加次標(biāo)記之后不會(huì)生成數(shù)據(jù)庫(kù)表的列

更多注解說明先壕,自行查找資料瘩扼。

構(gòu)建dao

使用快捷鍵Ctrl + F9 或者Build → Make Project

image.png

即可生成了dao,如下
image.png

三垃僚、初始化

在application入口:

import android.app.Application;

import com.lingkang.flychat.mapper.gen.DaoMaster;
import com.lingkang.flychat.mapper.gen.DaoSession;

import org.greenrobot.greendao.database.Database;


public class FlyChatApplication extends Application {

    private DaoSession daoSession;

    @Override
    public void onCreate() {
        super.onCreate();
        initSQLite();
    }

    private void initSQLite() {
        // regular SQLite database   其中 fcdb為數(shù)據(jù)庫(kù)名稱
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "fcdb");
        Database db = helper.getWritableDb();
        // 如果想要加密就使用以下:encryption-key是你想要的key
        //Database db = helper.getEncryptedWritableDb("encryption-key");
        daoSession = new DaoMaster(db).newSession();
    }
    
    //用于全局?jǐn)?shù)據(jù)庫(kù)會(huì)話操作
    public DaoSession getDaoSession() {
        return daoSession;
    }
}

注意下用于全局?jǐn)?shù)據(jù)庫(kù)會(huì)話操作和Application名字:getDaoSession()集绰、FlyChatApplication 后面用到

四、調(diào)用

準(zhǔn)備了這么多谆棺,開始調(diào)用:
1栽燕、首先獲取數(shù)據(jù)庫(kù)會(huì)話
2、使用會(huì)話進(jìn)行操作

// 獲取對(duì)象改淑,從全局里拿
DaoSession daoSession = ((FlyChatApplication) getApplication()).getDaoSession();
UserDao userDao=daoSession.getUserDao();

//增
User user=new User();
user.setId(1L);
user.setMemberSex(1);
user.setMemberNickname("凌康");
user.setMemberMobile("15977707555");
userDao.insert(user);

//查  ---使用toString需要在entity中@Override toString
List<User> users=userDao.loadAll();
LogUtils.e(users.get(0).toString());

//改碍岔,全量覆蓋
User user=new User();
user.setId(1L);
user.setMemberNickname("66666666");
userDao.update(user);

//刪
userDao.deleteByKey(1L);

效果如下:


image.png

image.png

更多操作可參考官方文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市朵夏,隨后出現(xiàn)的幾起案子蔼啦,更是在濱河造成了極大的恐慌,老刑警劉巖仰猖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捏肢,死亡現(xiàn)場(chǎng)離奇詭異奈籽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鸵赫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門衣屏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奉瘤,你說我怎么就攤上這事勾拉。” “怎么了盗温?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵藕赞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我卖局,道長(zhǎng)斧蜕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任砚偶,我火速辦了婚禮批销,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘染坯。我一直安慰自己均芽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布单鹿。 她就那樣靜靜地躺著掀宋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仲锄。 梳的紋絲不亂的頭發(fā)上劲妙,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音儒喊,去河邊找鬼镣奋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛怀愧,可吹牛的內(nèi)容都是我干的侨颈。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼芯义,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼哈垢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起毕贼,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛤奢,沒想到半個(gè)月后鬼癣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陶贼,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年待秃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拜秧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡章郁,死狀恐怖枉氮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情暖庄,我是刑警寧澤聊替,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站培廓,受9級(jí)特大地震影響惹悄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肩钠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一泣港、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧价匠,春花似錦当纱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至毙石,卻和暖如春廉沮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背徐矩。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工滞时, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滤灯。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓坪稽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容