Android开发经验谈Android开发程序员

GreenDao数据库带你出坑

2018-11-24  本文已影响10人  一本未写完的书
现在在Android中使用的数据库一般都是用的GreenDao,我们准备使用GreenDao的时候从网上看了很多文章,感觉很多技术点都不是我们关注的重点,经过实践以后觉得好多文章的内容都不太正确。我的这篇文章主要讲GreenDao的三个方面:

1 GreenDao第三方包的引入

2 GreenDao数据加密 数据库存放地址

3 GreenDao数据库升级

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要使用的包都导入进了。

greendao {
    schemaVersion 4//数据库版本号
    daoPackage 'com.min.mygreendao.db.gen'//设置DaoMaster、DaoSession、Dao包名
    targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录
    //targetGenDirTest:设置生成单元测试目录
    //generateTests:设置自动生成单元测试用例
}
设置数据生成目录
接下来就是得到DaoSession 对象对数据进行操作。其实操作无非是增删改查之类的,这些在网上有很多介绍,这里就不做介绍了。在MySQLiteOpenHelper的第二个参数中可以传递数据库地址,在开发测试环境的时候可以放到data目录中,使用不加密的数据,方便自己查看数据库。上线时改成加密数据库即可。
//        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());
/**
 * 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的很多问题都已经解决了,接下来就让我们愉快的在项目中添加这个数据库包吧。如果使用中有什么问题可以给我留言。源代码下载地址

上一篇下一篇

猜你喜欢

热点阅读