GreenDao配置以及基本使用

// 添加代碼倉(cāng)庫(kù) 步驟1

mavenCentral()

//greenDao生產(chǎn)代碼插件 步驟2

classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin

// apply plugin 步驟3

apply plugin: 'org.greenrobot.greendao'

//greenDAO配置添加依賴 步驟4

 implementation 'org.greenrobot:greendao:3.2.2' // add library
    implementation 'org.greenrobot:greendao-generator:3.2.2'

//greendao配置 步驟5 在buildTypes下面添加(數(shù)據(jù)庫(kù)版本號(hào)可用來(lái)給數(shù)據(jù)庫(kù)升級(jí))

  greendao {
        //數(shù)據(jù)庫(kù)版本號(hào)球散,升級(jí)時(shí)修改
        schemaVersion 1
        //生成的DAO檀夹,DaoMaster和DaoSession的包路徑只泼。默認(rèn)與表實(shí)體所在的包路徑相同
        daoPackage 'com.example.xts.greendaodemo.db'
        //生成源文件的路徑花嘶。默認(rèn)源文件目錄是在build目錄中的(build/generated/source/greendao)
        targetGenDir 'src/main/java'
    }

//第六步漠酿,
建bean類(lèi) 實(shí)體類(lèi)和數(shù)據(jù)庫(kù)對(duì)應(yīng),添加相關(guān)注解劫哼,然后編譯項(xiàng)目生成相關(guān)文件 錘項(xiàng)目(Make Project) 最常用的注解因該也就這是這些了吧

//一些基本使用的注解
@Entity   標(biāo)識(shí)實(shí)體類(lèi)洋只,greenDAO會(huì)映射成sqlite的一個(gè)表,表名為實(shí)體類(lèi)名的大寫(xiě)形式
@Id 標(biāo)識(shí)主鍵贬养,該字段的類(lèi)型為long或Long類(lèi)型挤土,autoincrement設(shè)置是否自動(dòng)增長(zhǎng)
@Property       標(biāo)識(shí)該屬性在表中對(duì)應(yīng)的列名稱, nameInDb設(shè)置名稱
@Transient      標(biāo)識(shí)該屬性將不會(huì)映射到表中,也就是沒(méi)有這列
@NotNull         設(shè)置表中當(dāng)前列的值不可為空
@Convert         指定自定義類(lèi)型(@linkPropertyConverter)
@Generated 運(yùn)行所產(chǎn)生的構(gòu)造函數(shù)或者方法误算,被此標(biāo)注的代碼可以變更或者下次運(yùn)行時(shí)清除
@Index    使用@Index作為屬性來(lái)創(chuàng)建一個(gè)索引仰美;
@JoinEntity     定義表連接關(guān)系
@JoinProperty         定義名稱和引用名稱屬性關(guān)系
@Keep     注解的代碼段在GreenDao下次運(yùn)行時(shí)保持不變
@OrderBy        指定排序方式
@ToMany         定義多個(gè)實(shí)體對(duì)象的關(guān)系
@ToOne  定義與另一個(gè)實(shí)體(一個(gè)實(shí)體對(duì)象)的關(guān)系
@Unique 向數(shù)據(jù)庫(kù)列添加唯一的約束
@Id(autoincrement = true)  主鍵自增
@NotNull 標(biāo)志這個(gè)字段不能是null
@Property(nameInDb = "User")
@Transient 表示不存儲(chǔ)在數(shù)據(jù)庫(kù)中
@Index(unique = true)
@Unique 用于標(biāo)志列的值的唯一性。


@Entity  //這里是使用到的注解
    public class Bean {
            @Id    //表示是表中的主鍵
            private Long id; //一定是Long型
            private String date;
            @Unique   //此字段的值唯一約束:不能重復(fù)
            private String name;
            private int step;
    }

//第七步儿礼,
創(chuàng)建一個(gè)自己的application類(lèi)咖杂,在application中完成DaoSession的初始化,避免以后重復(fù)初始化蚊夫,便于使用 诉字,,知纷,要配置到清單中

public class BaseApp extends Application {
    private static BaseApp sInstance;
    private DaoMaster.DevOpenHelper mHelper;
    private DaoMaster mDaoMaster;
    private DaoSession mDaoSession;
    @Override
    public void onCreate() {
        super.onCreate();
        sInstance = this;
        setDatabase();
    }
        /**

   * 設(shè)置greenDao

     ?    private void setDatabase() {
     ?        //通過(guò)DaoMaster內(nèi)部類(lèi)DevOpenHelper可以獲取一個(gè)SQLiteOpenHelper 對(duì)象
     ?        // 可能你已經(jīng)注意到了壤圃,你并不需要去編寫(xiě)「CREATE TABLE」這樣的 SQL 語(yǔ)句,因?yàn)?greenDAO 已經(jīng)幫你做了琅轧。
     ?        // 注意:默認(rèn)的 DaoMaster.DevOpenHelper 會(huì)在數(shù)據(jù)庫(kù)升級(jí)時(shí)伍绳,刪除所有的表,意味著這將導(dǎo)致數(shù)據(jù)的丟失乍桂。
     ?        // 所以冲杀,在正式的項(xiàng)目中效床,你還應(yīng)該做一層封裝,來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的安全升級(jí)漠趁。
     ?        // 此處MyDb表示數(shù)據(jù)庫(kù)名稱 可以任意填寫(xiě)
     ?        mHelper = new DaoMaster.DevOpenHelper(this, "MyDb", null);    // MyDb是數(shù)據(jù)庫(kù)的名字扁凛,更具自己的情況修改
     ?        SQLiteDatabase db = mHelper.getWritableDatabase();
     ?        mDaoMaster = new DaoMaster(db);
     ?        mDaoSession = mDaoMaster.newSession();
     ?    }
     ?    public static BaseApp getInstance(){
     ?        return sInstance;
     ?    }
     ?    public DaoSession getDaoSession(){
     ?        return mDaoSession;
     ?    }

}

//第八步
在清單中使用此BaseApp

<application
        android:name=".BaseApp"
        android:allowBackup="true"/>

//第九步 使用,

BeanDao beanDao = BaseApp.getInstance().getDaoSession().getBeanDao();

得到對(duì)象完成數(shù)據(jù)庫(kù)的創(chuàng)建闯传,表的創(chuàng)建谨朝,

//插入數(shù)據(jù)
beanDao.insert(new Bean(1l,"2019-8-27","張三","添加"));
//查詢所有數(shù)據(jù)
List<Bean> loadAll = beanDao.loadAll();
//刪除所有數(shù)據(jù)
dao.deleteAll();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市甥绿,隨后出現(xiàn)的幾起案子字币,更是在濱河造成了極大的恐慌,老刑警劉巖共缕,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洗出,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡图谷,警方通過(guò)查閱死者的電腦和手機(jī)翩活,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)便贵,“玉大人菠镇,你說(shuō)我怎么就攤上這事〕辛В” “怎么了利耍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)盔粹。 經(jīng)常有香客問(wèn)我隘梨,道長(zhǎng),這世上最難降的妖魔是什么舷嗡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任轴猎,我火速辦了婚禮,結(jié)果婚禮上进萄,老公的妹妹穿的比我還像新娘税稼。我一直安慰自己,他們只是感情好垮斯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布郎仆。 她就那樣靜靜地躺著,像睡著了一般兜蠕。 火紅的嫁衣襯著肌膚如雪扰肌。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天熊杨,我揣著相機(jī)與錄音曙旭,去河邊找鬼盗舰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛桂躏,可吹牛的內(nèi)容都是我干的钻趋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼剂习,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蛮位!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起鳞绕,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤失仁,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后们何,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體萄焦,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年冤竹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拂封。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹦蠕,死狀恐怖冒签,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情片部,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布霜定,位于F島的核電站档悠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏望浩。R本人自食惡果不足惜辖所,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望磨德。 院中可真熱鬧缘回,春花似錦、人聲如沸典挑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)您觉。三九已至拙寡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間琳水,已是汗流浹背肆糕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工般堆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诚啃。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓淮摔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親始赎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子和橙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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