GreenDao数据存储的使用
2018-07-31 本文已影响253人
RoboyCore
- 什么是GreenDao
一种orm数据存储,封装自SQLOpenHelper,减少表语句创建
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*在工程目录运用插件并添加依赖
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实体类转换自动生成路径
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使用
给实体类内容必须是基本类型,并且@Entity要声明在保存的数据类当中
@Id 主键关键字,可以设置autoincrement
@Transient 忽略该字段的关键字
写完注解后重新编译下即可在配置的目录下自动生成daoMaster、daoSession、daoXXX等实体类
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this,"myDao.db");//通过自动生成的Master类开启Dao帮助类
DaoMaster master = new DaoMaster(helper.getWritableDatabase());//开启数据库读取
DaoSession daoSession = master.newSession();//使用自动生成的Session
mDao = daoSession.getResultDao();//获取自动生成的dao实体类
mDao.insert(entity);//存储实体类
Result load = mDao.load(mList.get(position).id);//获取实体类数据
1、在主目录build.gradle配置插件路径
GreenDao注意事项
在使用GreenDao时3.2.2版本我发现Greendao一直打印
Didn't find class "net.sqlcipher.database.SQLiteOpenHelper”解决办法
但是并不影响正常使用,如果你保存的数据不涉及到安全的话,完全不用理会。
但是对我这种有强迫症的人来说,每次调试都看到打印一堆这种日志我就会很难受,所以就查阅了一些资料解决了,下面是解决办法。
打印这些日志其实是提示我们数据库没有加密,那么,我们给数据库加密即可。
首先引入一个第三方库:
https://www.zetetic.net/sqlcipher/sqlcipher-for-android/
implementation 'net.zetetic:android-database-sqlcipher:3.5.7@aar'
greendao如何使用网上有很多资料了。这里我就直接用了
在Application中初始化,获取数据库时用getEncryptedWritableDb获取即可,123为密码,密码自己随便设。
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();
}