GreenDaoUpgradeHelper
GreenDaoUpgradeHelper是一個greenDao的數據庫升級幫助類。使用它可以很容易解決數據庫升級問題,只需一行代碼。
使用說明
1.在根目錄的build.gradle文件的repositories內添加如下代碼:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
2.添加依賴(greendao 3.0及以上)
dependencies {
compile 'org.greenrobot:greendao:3.2.0'
compile 'com.github.yuweiguocn:GreenDaoUpgradeHelper:v2.0.0'
}
如果你使用的greendao是3.0以前的版本,請使用下面的依賴:
dependencies {
compile 'de.greenrobot:greendao:2.0.0'
compile 'com.github.yuweiguocn:GreenDaoUpgradeHelper:v1.0.1'
}
3.添加一個新類繼承DaoMaster.OpenHelper,添加構造函數並實現onUpgrade方法,在onUpgrade方法添加如下代碼即可,參數爲所有的Dao類:
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);
}
},TestDataDao.class, TestData2Dao.class, TestData3Dao.class);
完整代碼:
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);
}
},TestDataDao.class, TestData2Dao.class, TestData3Dao.class);
}
}
4.初始化
//MigrationHelper.DEBUG = true; //如果你想查看日誌信息,請將DEBUG設置爲true
MySQLiteOpenHelper helper = new MySQLiteOpenHelper(this, "test.db",
null);
daoMaster = new DaoMaster(helper.getWritableDatabase());