GreenDao數據庫帶你出坑

如今在Android中使用的數據庫通常都是用的GreenDao,咱們準備使用GreenDao的時候從網上看了不少文章,感受不少技術點都不是咱們關注的重點,通過實踐之後以爲好多文章的內容都不太正確。個人這篇文章主要講GreenDao的三個方面:

1 GreenDao第三方包的引入

2 GreenDao數據加密 數據庫存放地址

3 GreenDao數據庫升級

  • 1 在Android Studio中導入GreenDao的包:

設置倉庫與插件(Project: build.gradle):這個須要注意是在Project中的gradle文件中設置java

buildscript {
    repositories {
        jcenter()  
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.2'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
    }
}

配置依賴 ( Module:app build.gradle ):這個是在應用App下面的中的gradle文件中設置android

apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin

dependencies {
    compile 'org.greenrobot:greendao:3.2.2' // add library
    compile 'net.zetetic:android-database-sqlcipher:3.5.7@aar'//加密庫依賴(數據庫升級時使用)
}

好了,這就把GreenDao要使用的包都導入進了。git

  • 2 導入這個「net.zetetic:android-database-sqlcipher:3.5.7@aar」數據庫加密包主要是爲了數據庫升級的時候使用的。 其實若是你不用數據庫升級的話,能夠不用導入這個包。

(若是不手動設置的話會本身生成在這個目錄中)
不設置生成目錄
接下來設置一下數據生成的目錄:github

greendao {
    schemaVersion 4//數據庫版本號
    daoPackage 'com.min.mygreendao.db.gen'//設置DaoMaster、DaoSession、Dao包名
    targetGenDir 'src/main/java'//設置DaoMaster、DaoSession、Dao目錄
    //targetGenDirTest:設置生成單元測試目錄
    //generateTests:設置自動生成單元測試用例
}

設置數據生成目錄
接下來就是獲得DaoSession 對象對數據進行操做。其實操做無非是增刪改查之類的,這些在網上有不少介紹,這裏就不作介紹了。在MySQLiteOpenHelper的第二個參數中能夠傳遞數據庫地址,在開發測試環境的時候能夠放到data目錄中,使用不加密的數據,方便本身查看數據庫。上線時改爲加密數據庫便可。sql

//        DaoMaster.DevOpenHelper mHelper = new DaoMaster.DevOpenHelper(this, getDbPath(), null);
        //第二個參數能夠設置數據庫的地址
        MySQLiteOpenHelper mHelper = new MySQLiteOpenHelper(this,getDbPath(),null);
//        SQLiteDatabase db = mHelper.getWritableDatabase();
        //加密
        Database db = mHelper.getEncryptedWritableDb("1234");
        DaoMaster mDaoMaster = new DaoMaster(db);
        DaoSession mDaoSession = mDaoMaster.newSession();
        UserDao userDao = mDaoSession.getUserDao();
        User user=new User();
        user.setName("李四");
        user.setYear(10);
        userDao.save(user);
        List<User> users = userDao.loadAll();
        textView.setText(users.get(0).getName());
  • 3 其實數據庫升級很簡單,其餘不少文章都說的太複雜了,只須要添加兩個文件到項目中就能夠直接使用。

這倆個類的下載地址這兩個類的下載地址
必須的兩個文件
MigrationHelper這個類主要是進行數據升級使用的。惋惜不是我寫的,而是一個外國大神寫的。若是升級數據庫的話,只須要把GreenDao生成的文件數據添加到這個方法裏面的參數便可。數據庫

/**
 * Created by Administrator on 2017/9/13.
 *
 * @des 數據庫升級
 */
public class MySQLiteOpenHelper extends DaoMaster.OpenHelper {
    public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
        super(context, name, factory);
    }
    @Override
    public void onUpgrade(Database db, int oldVersion, int newVersion) {
        MigrationHelper.migrate(db, new MigrationHelper.ReCreateAllTableListener() {

            @Override
            public void onCreateAllTables(Database db, boolean ifNotExists) {
                DaoMaster.createAllTables(db, ifNotExists);
            }

            @Override
            public void onDropAllTables(Database db, boolean ifExists) {
                DaoMaster.dropAllTables(db, ifExists);
            }
        }, UserDao.class,TestDao.class);//, UserDao.class 這裏能夠重複添加文件。
    }
}

#### 好了,這樣的話GreenDao的不少問題都已經解決了,接下來就讓咱們愉快的在項目中添加這個數據庫包吧。若是使用中有什麼問題能夠給我留言。源代碼下載地址app

相關文章
相關標籤/搜索