greenDao使用

greenDao的使用

本文是greenDao入門教程。
greenDao的高級使用:
http://blog.csdn.net/myrssq/article/details/78425780
http://www.jianshu.com/p/dbec25bd575f
http://www.jianshu.com/p/513fb2ba5485

1.gradle中引入

compile 'org.greenrobot:greendao:3.2.0'

2 gradle配置

//數據庫相關配置

apply plugin: 'org.greenrobot.greendao'

greendao {

    schemaVersion 1  //版本號

    daoPackage 'com.zjrb.sjzsw.greendao'  //自動生成文件的目錄


    targetGenDir 'src/main/java'  //生成數據庫文件的目錄,默認根目錄

}

3 在工程gradle中配置

buildscript { 

repositories { 

    mavenCentral()    
}    
 dependencies {

classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'    
}

}

4 創建實體類

@Entity
public class User {
    @Id 
    private Long id; 
    private String name; 
    private int tempUsageCount; // not persisted  

}

5 makeProject

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

注意:實體類中要添加@Entity標籤,不然編譯的時候不會生成數據庫文件,要設置主鍵 @Id,用於數據庫查詢、刪除等操作

greenDao的使用

application中進行數據庫的初始化

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 getAppContext(){
         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;
      }
}

獲取newsChannelDao

newsChannelDao = MyApplication.getAppContext().getDaoSession().getNewsChannelDao();

查詢

newsChannelDao.loadAll()

增加

newsChannelDao.insert(new User())

刪除

newsChannelDao.delete(user)
newsChannelDao.deleteById(id)

更新

newsChannelDao.undate(user)

greenDao中的註解

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章