03 | Android 項(xiàng)目筆記 greenDAO的使用

我們項(xiàng)目還在用xutil的DB社露, 感覺(jué)太low了扁瓢, 所以換成greenDAO忽匈,下面簡(jiǎn)單記錄下使用步驟种蘸。

  1. 配置Gradle
    1-1. 工程目錄下build.gradle
    添加GreenDao插件支持
    ···
    buildscript {

    repositories {
    google()
    jcenter()
    }
    dependencies {
    classpath 'com.android.tools.build:gradle:3.0.1'
    classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0' // 添加插件 更好支持GreenDao
    }
    }

allprojects {
repositories {
google()
jcenter()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}
···

1-2. 項(xiàng)目下的build.gradle

apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // 添加應(yīng)用依賴(lài)插件

android {
   // 省略?xún)?nèi)容.....
}

greendao {
    //數(shù)據(jù)庫(kù)的schema版本,也可以理解為數(shù)據(jù)庫(kù)版本號(hào).  如果更改了實(shí)體/數(shù)據(jù)庫(kù)模式媚创,則必須增加該值渗钉。默認(rèn)為1
    schemaVersion 1
    //生成DaoMaster、DaoSession钞钙、Dao的包名鳄橘,也就是要放置這些類(lèi)的包的全路徑。
    daoPackage 'com.itkluo.greendaodemo.greendao'
    //生成DaoMaster芒炼、DaoSession瘫怜、Dao的目錄, 默認(rèn)為構(gòu)建目錄 (build/generated/source/greendao)
    targetGenDir 'src/main/java'
//    generateTests false //設(shè)置為true以自動(dòng)生成單元測(cè)試
//    targetGenDirTests //存儲(chǔ)生成的單元測(cè)試的基本目錄。默認(rèn)為 src/androidTest/java本刽。
}

dependencies {
    compile 'org.greenrobot:greendao:3.2.0' //添加庫(kù)文件
     // 省略?xún)?nèi)容.....
}

好了鲸湃, greenDao的基本配置就完成了, 接下來(lái)實(shí)際去感受下greenDao的強(qiáng)大方便吧~

  1. 開(kāi)始愉快的使用吧
    2-1.首先編寫(xiě)一個(gè)實(shí)體類(lèi)

可以理解為實(shí)體類(lèi)和表就是一種映射
···
@Entity
public class UserInfo implements Serializable {
private static final long serialVersionUID = 6299300192544739072L;
// @Id(autoincrement = true)
// public Long id;
@Id
public Long user_id;
public String username;
public String mobile;

@Transient
public int loginCount;
}
···
就定義了一個(gè)UserInfo 對(duì)象盅安, 還多了幾個(gè)注解@Entity唤锉,@Id以及@Transient

@Entity注解 讓greenDao根據(jù)實(shí)體類(lèi)去生成相應(yīng)的Dao世囊, 就相當(dāng)于實(shí)體類(lèi)和表做了映射關(guān)聯(lián)
@Id注解 選擇long / Long屬性作為實(shí)體ID别瞭。相當(dāng)表里的ID是同個(gè)概念≈旰叮可設(shè)置數(shù)autoincrement ID值不斷增加的標(biāo)志自增長(zhǎng)不重復(fù)蝙寨, 獲取自己生成一個(gè)唯一id, 如上以u(píng)ser_id為主鍵
@Transient注解 標(biāo)記的字段不會(huì)作為表字段晒衩, 可以作為實(shí)體類(lèi)中臨時(shí)用的字段

編譯項(xiàng)目,生成Dao相關(guān)文件~

圖片.png

編譯之后發(fā)現(xiàn)多了一下代碼

圖片.png

這里生成的就是上面我們配置的路徑


圖片.png

2-2 寫(xiě)代碼使用
獲得UserInfoDao墙歪,對(duì)于剛建立的表關(guān)系听系, 就是通過(guò)這個(gè)UserInfoDao去做操作
···
DaoMaster.DevOpenHelper mDevOpenHelper = new DaoMaster.DevOpenHelper(context, demo.db);
DaoMaster mDaoMaster = new DaoMaster(helper.getWritableDatabase());
DaoSession mDaoSession= getDaoMaster(context).newSession();
UserInfoDao mUserInfoDao=mDaoSession.getUserInfoDao();
···

增加數(shù)據(jù)
···
public void addUserInfo(final UserInfo userInfo) {
if (mUserInfoDao != null) {
if (userInfo != null) {
long result = mUserInfoDao.insertOrReplace(userInfo);
LogUtil.d(TAG, "userInfo result: " + result);
}
}
}
···

查詢(xún)數(shù)據(jù)
···
public UserInfo getUserInfoByID(long myUserId) {
try {
if (mUserInfoDao != null) {
return mUserInfoDao.queryBuilder().where(UserInfoDao.Properties.User_id.eq(myUserId)).build().unique();
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
···

刪除數(shù)據(jù)
···
public void deleteAllUserInfo(final long myUserId) {
if (mUserInfoDao != null) {
mUserInfoDao.deleteByKey(myUserId);
}
}
···

好了, 就記錄一些簡(jiǎn)單的操作虹菲, 還有排序靠胜,分頁(yè)等表操作可查看api。
具體看示例demo中把創(chuàng)建DAO毕源, 異步查詢(xún)和返回做了封裝浪漠,還可修改DB存儲(chǔ)路徑, 數(shù)據(jù)的升級(jí)遷移

源碼 https://github.com/kluo88/GreenDaoDemo

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末霎褐,一起剝皮案震驚了整個(gè)濱河市址愿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冻璃,老刑警劉巖响谓,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異省艳,居然都是意外死亡娘纷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)跋炕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)失驶,“玉大人,你說(shuō)我怎么就攤上這事枣购℃姨剑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵棉圈,是天一觀(guān)的道長(zhǎng)涩堤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)分瘾,這世上最難降的妖魔是什么胎围? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮德召,結(jié)果婚禮上白魂,老公的妹妹穿的比我還像新娘。我一直安慰自己上岗,他們只是感情好福荸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著肴掷,像睡著了一般敬锐。 火紅的嫁衣襯著肌膚如雪背传。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天台夺,我揣著相機(jī)與錄音径玖,去河邊找鬼。 笑死颤介,一個(gè)胖子當(dāng)著我的面吹牛梳星,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播滚朵,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼丰泊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了始绍?” 一聲冷哼從身側(cè)響起瞳购,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亏推,沒(méi)想到半個(gè)月后学赛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吞杭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年盏浇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芽狗。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绢掰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出童擎,到底是詐尸還是另有隱情滴劲,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布顾复,位于F島的核電站班挖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏芯砸。R本人自食惡果不足惜萧芙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望假丧。 院中可真熱鬧双揪,春花似錦、人聲如沸包帚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)婴噩。三九已至擎场,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間几莽,已是汗流浹背迅办。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留章蚣,地道東北人站欺。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像纤垂,于是被迫代替她去往敵國(guó)和親矾策。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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

  • 問(wèn)題來(lái)了,腦海里突然覺(jué)得就是這樣吼鱼,問(wèn)題來(lái)了蓬豁。 當(dāng)我不想看書(shū),不想睡覺(jué)菇肃,也不想干其他地粪,躺在床上的時(shí)候∷霭或許我不知道還...
    生活無(wú)非就是愛(ài)啊閱讀 109評(píng)論 0 0
  • 夏天來(lái)了想拍漂亮的照片斗忌,一直依靠美顏相機(jī)可是治標(biāo)不治本的辦法质礼,不如通過(guò)一些方法直接祛除斑點(diǎn),也不至于美顏磨皮都是拉...
    女神萌萌噠閱讀 479評(píng)論 1 0
  • 新時(shí)代织阳,新課程几苍,核心素養(yǎng),計(jì)算思維的培養(yǎng)是大趨勢(shì)陈哑,在課程落實(shí)過(guò)程的各式各樣的問(wèn)題與困惑困難都存在妻坝,也困擾著我們,作...
    松美六郎閱讀 345評(píng)論 1 1
  • xmind 源文件下載 https://pan.baidu.com/s/1793o8APhVO0BNGA3C9mBgw
    Mazexal閱讀 387評(píng)論 0 0
  • 我的名字是錢(qián)芊芊惊窖,聽(tīng)起來(lái)很有錢(qián)是嗎刽宪?我有個(gè)妹妹叫作錢(qián)憶憶,又是千千億億的界酒,是個(gè)大有錢(qián)人家嗎圣拄?不,相反地毁欣,我父親是個(gè)...
    ChongHuaizhiCho閱讀 203評(píng)論 0 1