- 什么是GreenDao
一種orm數(shù)據(jù)存儲(chǔ)交播,封裝自SQLOpenHelper秽褒,減少表語(yǔ)句創(chuàng)建
1聋庵、配置GreenDao插件
1*在主目錄build.gradle配置插件路徑
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
2*在工程目錄運(yùn)用插件并添加依賴
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'
3依賴
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
compile 'org.greenrobot:greendao:3.2.0'
compile 'org.greenrobot:greendao-generator:3.2.0'
}
4*在工程目錄android下添加greedao實(shí)體類(lèi)轉(zhuǎn)換自動(dòng)生成路徑
android {
compileSdkVersion 24
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "mobi.xiaowu.greendao"
minSdkVersion 16
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
greendao{
schemaVersion 1//版本
targetGenDir 'src/main/java'
daoPackage 'mobi.xiaowu.greendao.dao'
}
2.GreenDao使用
給實(shí)體類(lèi)內(nèi)容必須是基本類(lèi)型饱苟,并且@Entity要聲明在保存的數(shù)據(jù)類(lèi)當(dāng)中
@Id 主鍵關(guān)鍵字,可以設(shè)置autoincrement
@Transient 忽略該字段的關(guān)鍵字
寫(xiě)完注解后重新編譯下即可在配置的目錄下自動(dòng)生成daoMaster编矾、daoSession熟史、daoXXX等實(shí)體類(lèi)
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this,"myDao.db");//通過(guò)自動(dòng)生成的Master類(lèi)開(kāi)啟Dao幫助類(lèi)
DaoMaster master = new DaoMaster(helper.getWritableDatabase());//開(kāi)啟數(shù)據(jù)庫(kù)讀取
DaoSession daoSession = master.newSession();//使用自動(dòng)生成的Session
mDao = daoSession.getResultDao();//獲取自動(dòng)生成的dao實(shí)體類(lèi)
mDao.insert(entity);//存儲(chǔ)實(shí)體類(lèi)
Result load = mDao.load(mList.get(position).id);//獲取實(shí)體類(lèi)數(shù)據(jù)
1窄俏、在主目錄build.gradle配置插件路徑
GreenDao注意事項(xiàng)
在使用GreenDao時(shí)3.2.2版本我發(fā)現(xiàn)Greendao一直打印
Didn't find class "net.sqlcipher.database.SQLiteOpenHelper”解決辦法
但是并不影響正常使用蹂匹,如果你保存的數(shù)據(jù)不涉及到安全的話,完全不用理會(huì)凹蜈。
但是對(duì)我這種有強(qiáng)迫癥的人來(lái)說(shuō)限寞,每次調(diào)試都看到打印一堆這種日志我就會(huì)很難受,所以就查閱了一些資料解決了仰坦,下面是解決辦法履植。
打印這些日志其實(shí)是提示我們數(shù)據(jù)庫(kù)沒(méi)有加密,那么悄晃,我們給數(shù)據(jù)庫(kù)加密即可玫霎。
首先引入一個(gè)第三方庫(kù):
https://www.zetetic.net/sqlcipher/sqlcipher-for-android/
implementation 'net.zetetic:android-database-sqlcipher:3.5.7@aar'
greendao如何使用網(wǎng)上有很多資料了。這里我就直接用了
在Application中初始化妈橄,獲取數(shù)據(jù)庫(kù)時(shí)用getEncryptedWritableDb獲取即可,123為密碼庶近,密碼自己隨便設(shè)。
private void initGreenDao() {
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "user.db", null);
//Database dataBase1 = helper.getWritableDb();
Database database = helper.getEncryptedWritableDb("123");
daoSession=new DaoMaster(database).newSession();
}