GreenDao数据库带你出坑

作者: 一本未写完的书 | 来源:发表于2018-11-24 20:33 被阅读10次
    现在在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要使用的包都导入进了。

    • 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:设置自动生成单元测试用例
    }
    
    设置数据生成目录
    接下来就是得到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());
    
    • 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的很多问题都已经解决了,接下来就让我们愉快的在项目中添加这个数据库包吧。如果使用中有什么问题可以给我留言。源代码下载地址

    相关文章

      网友评论

        本文标题:GreenDao数据库带你出坑

        本文链接:https://www.haomeiwen.com/subject/fivyqqtx.html