greendao 使用和說(shuō)明(附帶個(gè)人寫(xiě)的utils)

引用最新版greendao
 implementation "org.greenrobot:greendao:3.2.2"
配置生成路徑和版本號(hào)
greendao {
    schemaVersion 1
    daoPackage 'com.xk.greendao.db'
    targetGenDir 'src/main/java'
}

說(shuō)明:版本號(hào)為1蟋恬,生成文件放在com.xk.greendao.db下的這個(gè)路徑里src/main/java.

點(diǎn)擊Mark Project鍵,就會(huì)生成相關(guān)文件
image.png

image.png
greendao 表的注解說(shuō)明(我為了方便就按照我的項(xiàng)目里建的表來(lái)說(shuō)了)

表:

import com.xk.gvido.app.model.net.bean.video.VideoSimpleInfoBean;

import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Index;
import org.greenrobot.greendao.annotation.NotNull;
import org.greenrobot.greendao.annotation.Property;

import java.util.Date;

/**
 * @author Xiong Ke
 * @date 2017/10/19
 */
@Entity(nameInDb = "browsing_history")
public class BrowsingHistory {

    @Property(nameInDb = "_title")
    private String title;

    @Property(nameInDb = "_pic")
    private String pic;

    @Id
    @NotNull
    @Index(unique = true)
    @Property(nameInDb = "_dataId")
    private String dataId;

    @Property(nameInDb = "_score")
    private String score;

    @Property(nameInDb = "_airTime")
    private String airTime;

    @Property(nameInDb = "_moreURL")
    private String moreURL;

    @Property(nameInDb = "_loadURL")
    private String loadURL;

    @Property(nameInDb = "_duration")
    private String duration;

    @Property(nameInDb = "_description")
    private String description;

    @Property(nameInDb = "_angleIcon")
    private String angleIcon;

    @Property(nameInDb = "_roomId")
    private String roomId;

    @Property(nameInDb = "_shareURL")
    private String shareURL;

    @Property(nameInDb = "_loadType")
    private String loadType;

    @Property(nameInDb = "_browsingDate")
    private Date browsingDate;

    public static BrowsingHistory newInstance(VideoSimpleInfoBean videoSimpleInfoBean) {
        return new BrowsingHistory(videoSimpleInfoBean.title
                , videoSimpleInfoBean.pic
                , videoSimpleInfoBean.dataId
                , videoSimpleInfoBean.score
                , videoSimpleInfoBean.airTime
                , videoSimpleInfoBean.moreURL
                , videoSimpleInfoBean.loadURL
                , videoSimpleInfoBean.duration
                , videoSimpleInfoBean.description
                , videoSimpleInfoBean.angleIcon
                , videoSimpleInfoBean.roomId
                , videoSimpleInfoBean.shareURL
                , videoSimpleInfoBean.loadType
                , new Date());
    }

    @Generated(hash = 1357393467)
    public BrowsingHistory(String title, String pic, @NotNull String dataId,
                           String score, String airTime, String moreURL, String loadURL,
                           String duration, String description, String angleIcon, String roomId,
                           String shareURL, String loadType, Date browsingDate) {
        this.title = title;
        this.pic = pic;
        this.dataId = dataId;
        this.score = score;
        this.airTime = airTime;
        this.moreURL = moreURL;
        this.loadURL = loadURL;
        this.duration = duration;
        this.description = description;
        this.angleIcon = angleIcon;
        this.roomId = roomId;
        this.shareURL = shareURL;
        this.loadType = loadType;
        this.browsingDate = browsingDate;
    }

    @Generated(hash = 1959202334)
    public BrowsingHistory() {
    }

    public String getTitle() {
        return this.title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getPic() {
        return this.pic;
    }

    public void setPic(String pic) {
        this.pic = pic;
    }

    public String getDataId() {
        return this.dataId;
    }

    public void setDataId(String dataId) {
        this.dataId = dataId;
    }

    public String getScore() {
        return this.score;
    }

    public void setScore(String score) {
        this.score = score;
    }

    public String getAirTime() {
        return this.airTime;
    }

    public void setAirTime(String airTime) {
        this.airTime = airTime;
    }

    public String getMoreURL() {
        return this.moreURL;
    }

    public void setMoreURL(String moreURL) {
        this.moreURL = moreURL;
    }

    public String getLoadURL() {
        return this.loadURL;
    }

    public void setLoadURL(String loadURL) {
        this.loadURL = loadURL;
    }

    public String getDuration() {
        return this.duration;
    }

    public void setDuration(String duration) {
        this.duration = duration;
    }

    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getAngleIcon() {
        return this.angleIcon;
    }

    public void setAngleIcon(String angleIcon) {
        this.angleIcon = angleIcon;
    }

    public String getRoomId() {
        return this.roomId;
    }

    public void setRoomId(String roomId) {
        this.roomId = roomId;
    }

    public String getShareURL() {
        return this.shareURL;
    }

    public void setShareURL(String shareURL) {
        this.shareURL = shareURL;
    }

    public String getLoadType() {
        return this.loadType;
    }

    public void setLoadType(String loadType) {
        this.loadType = loadType;
    }

    public Date getBrowsingDate() {
        return this.browsingDate;
    }

    public void setBrowsingDate(Date browsingDate) {
        this.browsingDate = browsingDate;
    }
}

說(shuō)明:
a. @Entity(nameInDb = "browsing_history") 生成的表的名字
b.
@Id 表的主鍵
@Index(unique = true) 主鍵索引唯一
@Property(nameInDb = "_dataId") 鍵值得名字
c. 每次創(chuàng)建新表時(shí),都要提高表的版本號(hào)涩金,然后重新編輯


3.使用方法

public class AppDbHelper implements DbHelper {
    private static AppDbHelper appDbHelper;
    private static DaoSession mDaoSession;

    private AppDbHelper() {
    }

    public static AppDbHelper getInstance() {
        if (appDbHelper == null) {
            synchronized (AppDbHelper.class) {
                if (appDbHelper == null) {
                    appDbHelper = new AppDbHelper();
                }
            }
        }
        return appDbHelper;
    }

  //application中初始化
    public static void init(Application application){
        DaoMaster.DevOpenHelper dbOpenHelper = new DaoMaster.DevOpenHelper(application, DbConfig.DATABASE_NAME);
        Database db = dbOpenHelper.getWritableDb();
        mDaoSession = new DaoMaster(db).newSession();
        if (BuildConfig.DEBUG) {
            QueryBuilder.LOG_SQL = true;
            QueryBuilder.LOG_VALUES = true;
        }
    }

    @Override
    public Observable<Long> insertOrReplaceHotSearch(final List<SearchHotRecommend> searchHotRecommends) {
        return Observable.fromCallable(() -> {
            mDaoSession.getSearchHotRecommendDao().deleteAll();
            mDaoSession.getSearchHotRecommendDao().insertOrReplaceInTx(
                    searchHotRecommends.toArray(new SearchHotRecommend[searchHotRecommends.size()]));
            return 1L;
        });
    }

    @Override
    public Observable<List<SearchHotRecommend>> getHotSearch() {
        return Observable.just(mDaoSession.getSearchHotRecommendDao().loadAll());
    }

    @Override
    public Observable<Long> insertOrReplacePictures(final List<Picture> pictures) {
        return Observable.fromCallable(() -> {
            PictureDao pictureDao = mDaoSession.getPictureDao();
            pictureDao.insertOrReplaceInTx(pictures.toArray(new Picture[pictures.size()]));
            List<Picture> pictureList = pictureDao.loadAll();
            if (pictureList.size() > 200) {
                List<Picture> _pictureList = pictureList.subList(200, pictureList.size());
                pictureDao.deleteInTx(_pictureList.toArray(new Picture[_pictureList.size()]));
            }
            return 1L;
        });
    }

}

public class DbConfig {
    public static final String DATABASE_NAME = "gVideo";
}

說(shuō)明:
DbHelper是我寫(xiě)的一個(gè)接口類(lèi),這個(gè)類(lèi)來(lái)實(shí)現(xiàn)的.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末粘拾,一起剝皮案震驚了整個(gè)濱河市溺蕉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌仿村,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兴喂,死亡現(xiàn)場(chǎng)離奇詭異蔼囊,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)衣迷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)畏鼓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人壶谒,你說(shuō)我怎么就攤上這事云矫。” “怎么了汗菜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵让禀,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我陨界,道長(zhǎng)巡揍,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任菌瘪,我火速辦了婚禮腮敌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己糜工,他們只是感情好弊添,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著捌木,像睡著了一般油坝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钮莲,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天免钻,我揣著相機(jī)與錄音彼水,去河邊找鬼崔拥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛凤覆,可吹牛的內(nèi)容都是我干的链瓦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼盯桦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼慈俯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起拥峦,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤贴膘,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后略号,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體刑峡,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年玄柠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了突梦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡羽利,死狀恐怖宫患,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情这弧,我是刑警寧澤娃闲,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站匾浪,受9級(jí)特大地震影響皇帮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜户矢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一玲献、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦捌年、人聲如沸瓢娜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)眠砾。三九已至,卻和暖如春托酸,著一層夾襖步出監(jiān)牢的瞬間褒颈,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工励堡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谷丸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓应结,卻偏偏與公主長(zhǎng)得像刨疼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鹅龄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理揩慕,服務(wù)發(fā)現(xiàn),斷路器扮休,智...
    卡卡羅2017閱讀 134,659評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評(píng)論 25 707
  • 安卓基礎(chǔ)開(kāi)發(fā)庫(kù)玷坠,讓開(kāi)發(fā)簡(jiǎn)單點(diǎn)蜗搔。DevRing & Demo地址:https://github.com/LJYcod...
    JYcoder閱讀 7,854評(píng)論 6 20
  • (一)GreenDao簡(jiǎn)介 GreenDao是一個(gè)對(duì)象關(guān)系映射(ORM)的開(kāi)源框架,目前最主流的安卓數(shù)據(jù)庫(kù)操作框架...
    miss2008閱讀 5,248評(píng)論 4 18
  • 總監(jiān)今天讓寫(xiě)預(yù)售總結(jié)侨糟,說(shuō)實(shí)話(huà)這來(lái)的有點(diǎn)突然鞭缭,我仿佛還沒(méi)準(zhǔn)備好但著實(shí)有太多的話(huà)想要表達(dá)痰洒。那就記錄一下吧。現(xiàn)在是8.6...
    念美美閱讀 848評(píng)論 5 7