GreenDao的基本使用

GreenDAO 是一款開源的面向 Android 的輕便盾鳞、快捷的 ORM 框架联予,將 Java 對象映射到 SQLite 數(shù)據(jù)庫中脓恕,我們操作數(shù)據(jù)庫的時候哈肖,不在需要編寫復雜的 SQL語句躬拢, 在性能方面躲履,GreenDAO 針對 Android 進行了高度優(yōu)化见间, 最小的內(nèi)存開銷 、依賴體積小 同時還是支持數(shù)據(jù)庫加密工猜。關(guān)于GreenDao的基本的介紹米诉,很多的博客都有寫,我這里就不做過多的講解了篷帅。這里簡要的介紹一下他的基本的用法史侣,喜歡的朋友可以看看。

1.設置倉庫與插件---首先在(Project:build.gradle)添加魏身,紅色的文字的部分

buildscript {


? ? repositories {

? ? ? ? google()

? ? ? ? jcenter()

? ? ? ? mavenCentral() // 添加這個倉庫? ? }

? ? dependencies {

? ? ? ? classpath 'com.android.tools.build:gradle:3.0.1'? ? ? ? classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // 添加插件路徑? ? ? ? // NOTE: Do not place your application dependencies here; they belong? ? ? ? // in the individual module build.gradle files? ? }

}

allprojects {

? ? repositories {

? ? ? ? google()

? ? ? ? jcenter()

? ? }

}

task clean(type: Delete) {

? ? delete rootProject.buildDir}

2.配置依賴 ( Module:app build.gradle )---同理添加惊橱,紅色的文字的部分

apply plugin: 'com.android.application'apply plugin: 'org.greenrobot.greendao' //添加插件的調(diào)用android {

? ? compileSdkVersion 26? ? defaultConfig {

? ? ? ? applicationId "com.example.administrator.mygreendao"? ? ? ? minSdkVersion 15? ? ? ? targetSdkVersion 26? ? ? ? versionCode 1? ? ? ? versionName "1.0"? ? ? ? testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"? ? }

? ? buildTypes {

? ? ? ? release {

? ? ? ? ? ? minifyEnabled false? ? ? ? ? ? proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'? ? ? ? }

? ? }

? greendao {? ? ? ? schemaVersion 1? ? ? ? ? ? ? ? ? //數(shù)據(jù)庫版本號? ? ? ? targetGenDir "src/main/java"? ? //生成代碼的根路徑? ? ? ? daoPackage "com.example.administrator.mygreendao.db"? ? ? ? ? //在根路徑下生成類的包名? ? }}

dependencies {

? ? implementation fileTree(dir: 'libs', include: ['*.jar'])

? ? implementation 'com.android.support:appcompat-v7:26.1.0'? ? implementation 'com.android.support.constraint:constraint-layout:1.1.0'? ? testImplementation 'junit:junit:4.12'? ? androidTestImplementation 'com.android.support.test:runner:1.0.2'? ? androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'? ? implementation 'org.greenrobot:greendao:3.2.2' //添加庫的依賴

3, 我們寫一個簡單的實體類(User),測試一下

@Entitypublic classUser{

? ? @Id

? ? private long id;

? ? private String name;

? ? private int age;

? ? //此處省略了getter,setter 方法

}

4.點擊小錘子的圖標編譯一下

這個時候可以看到左邊和我們的代碼區(qū)域都出現(xiàn)了變化

6.初始化 GreenDao ( 通常初始化代碼寫在我們的 Application 類中)

package com.example.administrator.mygreendao;import android.app.Application;import android.database.sqlite.SQLiteDatabase;import com.example.administrator.mygreendao.db.DaoMaster;import com.example.administrator.mygreendao.db.DaoSession;/** * Created by Administrator on 2018/5/22. * 初始化GreenDao */public class MyAppextends Application {private DaoSessiondaoSession;? ? @Override? ? public void onCreate() {super.onCreate();? ? ? ? initGreenDao();? ? }/**? ? * 初始化 GreenDao? ? */? ? private void initGreenDao() {//創(chuàng)建數(shù)據(jù)庫? ? ? ? DaoMaster.DevOpenHelper helper =new DaoMaster.DevOpenHelper(this, "test.db");//表名? ? ? ? SQLiteDatabase db = helper.getWritableDatabase();? ? ? ? DaoMaster daoMaster =new DaoMaster(db);? ? ? ? daoSession = daoMaster.newSession();? ? }/**? ? * 獲取DaoSession? ? */? ? public DaoSessiongetDaoSession() {return daoSession;? ? }}

7.使用

package com.example.administrator.mygreendao;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import com.example.administrator.mygreendao.db.DaoSession;import com.example.administrator.mygreendao.db.UserDao;import org.greenrobot.greendao.query.QueryBuilder;import java.util.List;/** * GreenDao的基本用法實踐 */public class MainActivityextends AppCompatActivity {private UserDaouserDao;? ? private Useruser;? ? @Override? ? protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);? ? ? ? setContentView(R.layout.activity_main);? ? ? ? init();? ? ? ? initDate();? ? ? ? initChaRu();? ? ? ? deleted();? ? ? ? update();? ? ? ? query();? ? ? ? query2();? ? ? ? query3();? ? ? ? query4();? ? }//查詢年齡大于10的用戶? ? private Listquery4() {? ? ? ? QueryBuilder builder =userDao.queryBuilder();? ? ? ? return builder.where(UserDao.Properties.Age.gt(10)).build().list();? ? }//根據(jù)id查詢? ? private Userquery2() {return userDao.loadByRowId(1);? ? }private Listquery3() {return userDao.queryRaw("where AGE>?", "10");//查詢年齡大于10的用戶? ? }//查詢所有記錄? ? private Listquery() {return userDao.loadAll();? ? }//更新記錄? ? private void update() {userDao.update(user);? ? }//獲取UserDao? ? private void init() {? ? ? ? MyApp myApp = (MyApp) getApplication();? ? ? ? DaoSession daoSession = myApp.getDaoSession();? ? ? ? userDao = daoSession.getUserDao();? ? }//增加? ? private void initDate() {user =new User();? ? ? ? user.setId(1);? ? ? ? user.setName("小明");? ? ? ? user.setAge(16);? ? ? ? userDao.insert(user);? ? }//插入和替換? ? private void initChaRu() {userDao.insertOrReplace(user);? ? }//刪除記錄? ? private void deleted() {userDao.delete(user);? ? }}

好啦這樣就基本完成啦

六箭昵、注解詳解

@Entity

表明這個實體類會在數(shù)據(jù)庫中生成一個與之相對應的表

@Id

對應數(shù)據(jù)表中的 Id 字段

@Index

使用@Index作為一個屬性來創(chuàng)建一個索引李皇,默認是使用字段名

@Property

設置一個非默認關(guān)系映射所對應的列名,默認是使用字段名,例如:@Property(nameInDb = “userName”)

@NotNull

設置數(shù)據(jù)庫表當前列不能為空

@Transient

添加此標記后不會生成數(shù)據(jù)庫表的列

@Unique

表名該屬性在數(shù)據(jù)庫中只能有唯一值

@ToOne

表示一對一關(guān)系

關(guān)于更加詳細的博客可以

參考SpeedyStone博客

地址:https://blog.csdn.net/speedystone/article/details/72769793

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宙枷,一起剝皮案震驚了整個濱河市掉房,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌慰丛,老刑警劉巖卓囚,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诅病,居然都是意外死亡哪亿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門贤笆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝇棉,“玉大人,你說我怎么就攤上這事芥永〈垡螅” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵埋涧,是天一觀的道長板辽。 經(jīng)常有香客問我,道長棘催,這世上最難降的妖魔是什么劲弦? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮醇坝,結(jié)果婚禮上邑跪,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好画畅,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布砸琅。 她就那樣靜靜地躺著,像睡著了一般夜赵。 火紅的嫁衣襯著肌膚如雪明棍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天寇僧,我揣著相機與錄音摊腋,去河邊找鬼。 笑死嘁傀,一個胖子當著我的面吹牛兴蒸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播细办,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼橙凳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了笑撞?” 一聲冷哼從身側(cè)響起岛啸,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茴肥,沒想到半個月后坚踩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡瓤狐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年瞬铸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片础锐。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡嗓节,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出皆警,到底是詐尸還是另有隱情拦宣,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布耀怜,位于F島的核電站恢着,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏财破。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一从诲、第九天 我趴在偏房一處隱蔽的房頂上張望左痢。 院中可真熱鬧,春花似錦、人聲如沸俊性。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽定页。三九已至趟薄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間典徊,已是汗流浹背杭煎。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留卒落,地道東北人羡铲。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像儡毕,于是被迫代替她去往敵國和親也切。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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