Android 中GreenDao3.0簡單使用

關於GreenDao

greenDao是一個將對象映射到SQLite數據庫中的輕量且快速的ORM解決方案。 關於greenDAO的概念可以看官網greenDAO

greenDAO 優勢

1、一個精簡的庫 2、性能最大化 3、內存開銷最小化 4、易於使用的 APIs 5、對 Android 進行高度優化

GreenDao 3.0使用

GreenDao 3.0採用註解的方式來定義實體類,通過gradle插件生成相應的代碼。

一,在as中導入相關的包
compile'org.greenrobot:greendao:3.0.1'
compile'org.greenrobot:greendao-generator:3.0.0'
二,在build.gradle中進行配置:
apply plugin: 'org.greenrobot.greendao'
buildscript { 
    repositories { 
        mavenCentral()    
}    
dependencies {
    classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'    
    }
}

在gradle的根模塊中加入上述代碼。

三,自定義路徑
greendao {
    schemaVersion 1
    daoPackage 'com.anye.greendao.gen'
    targetGenDir 'src/main/java'
}

在gradle的根模塊中加入上述代碼,就完成了我們的基本配置了。
屬性介紹:
schemaVersion--> 指定數據庫schema版本號,遷移等操作會用到;
daoPackage --> dao的包名,包名默認是entity所在的包;
targetGenDir --> 生成數據庫文件的目錄;

四,創建一個User的實體類
@Entity
public class User {
    @Id 
    private Long id; 
    private String name; 
    @Transient 
    private int tempUsageCount; // not persisted  
}
五,MakeProject

編譯項目,User實體類會自動編譯,生成get、set方法並且會在com.anye.greendao.gen目錄下生成三個文件;


greenDao

GreenDao使用

 public class MyApplication extends Application {
 private DaoMaster.DevOpenHelper mHelper;
 private SQLiteDatabase db;
 private DaoMaster mDaoMaster;
 private DaoSession mDaoSession;
 public static MyApplication instances;
 @Override    public void onCreate() {
     super.onCreate();
     instances = this;
     setDatabase();
 }
 public static MyApplication getInstances(){
     return instances;
 }

/**
 * 設置greenDao
 */
private void setDatabase() {
    // 通過 DaoMaster 的內部類 DevOpenHelper,你可以得到一個便利的 SQLiteOpenHelper 對象。
    // 可能你已經注意到了,你並不需要去編寫「CREATE TABLE」這樣的 SQL 語句,因爲 greenDAO 已經幫你做了。
    // 注意:默認的 DaoMaster.DevOpenHelper 會在數據庫升級時,刪除所有的表,意味着這將導致數據的丟失。
    // 所以,在正式的項目中,你還應該做一層封裝,來實現數據庫的安全升級。
    mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
    db = mHelper.getWritableDatabase();
    // 注意:該數據庫連接屬於 DaoMaster,所以多個 Session 指的是相同的數據庫連接。 
    mDaoMaster = new DaoMaster(db); 
    mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
      return mDaoSession;
}
public SQLiteDatabase getDb() {
      return db;
  }
}

獲取UserDao對象:

  mUserDao = MyApplication.getInstances().getDaoSession().getUserDao();

簡單的增刪改查實現:

1. 增
mUser = new User((long)2,"anye3");
mUserDao.insert(mUser);//添加一個
2. 刪
mUserDao.deleteByKey(id);
3. 改
mUser = new User((long)2,"anye0803");
mUserDao.update(mUser);
4. 查
List<User> users = mUserDao.loadAll();
String userName = "";
for (int i = 0; i < users.size(); i++) {
    userName += users.get(i).getName()+",";
}
mContext.setText("查詢全部數據==>"+userName);

更多的操作就不一一介紹了,大家可以根據需要去查找資料;

greendao中的註解

(一) @Entity 定義實體
@nameInDb 在數據庫中的名字,如不寫則爲實體中類名
@indexes 索引
@createInDb 是否創建表,默認爲true,false時不創建
@schema 指定架構名稱爲實體
@active 無論是更新生成都刷新
(二) @Id
(三) @NotNull 不爲null
(四) @Unique 唯一約束
(五) @ToMany 一對多
(六) @OrderBy 排序
(七) @ToOne 一對一
(八) @Transient 不存儲在數據庫中
(九) @generated 由greendao產生的構造函數或方法

結束語

總體來說,GreenDao3.0在配置上相對於2.0要簡單的多。
本文 Demo 下載鏈接:https://github.com/anye0803/GreenDao/

發佈了99 篇原創文章 · 獲贊 14 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章