GreenDao資料庫帶你出坑
現在在Android中使用的資料庫一般都是用的GreenDao,我們準備使用GreenDao的時候從網上看了很多文章,感覺很多技術點都不是我們關注的重點,經過實踐以後覺得好多文章的內容都不太正確。我的這篇文章主要講GreenDao的三個方面:
1 GreenDao第三方包的引入
2 GreenDao資料加密 資料庫存放地址
3 GreenDao資料庫升級
-
1 在Android Studio中匯入GreenDao的包:
設定倉庫與外掛(Project: build.gradle):這個需要注意是在Project中的gradle檔案中設定
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檔案中設定
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要使用的包都匯入進了。
- 匯入這個“ ofollow,noindex">net.zetetic:android-database-sqlcipher:3.5.7@aar ”資料庫加密包主要是為了資料庫升級的時候使用的。
2 匯入這個“ net.zetetic:android-database-sqlcipher:3.5.7@aar ”資料庫加密包主要是為了資料庫升級的時候使用的。 其實如果你不用資料庫升級的話,可以不用匯入這個包。
(如果不手動設定的話會自己生成在這個目錄中)
不設定生成目錄
接下來設定一下資料生成的目錄:
greendao { schemaVersion 4//資料庫版本號 daoPackage 'com.min.mygreendao.db.gen'//設定DaoMaster、DaoSession、Dao包名 targetGenDir 'src/main/java'//設定DaoMaster、DaoSession、Dao目錄 //targetGenDirTest:設定生成單元測試目錄 //generateTests:設定自動生成單元測試用例 }

設定資料生成目錄
//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的很多問題都已經解決了,接下來就讓我們愉快的在專案中新增這個資料庫包吧。如果使用中有什麼問題可以給我留言。 原始碼下載地址