美文网首页
GreenDao数据库笔记

GreenDao数据库笔记

作者: Zoyix | 来源:发表于2018-03-25 11:52 被阅读0次

    greenDAO3 入门(配置,基本操作,数据库升级) - 简书

    该文章的最后一部分数据库的升级,用了一个三方的库,其实就是overflow里的一个大神写的一个类,详见以下网址:android - GreenDAO schema update and data migration? - Stack Overflow

    greenDao官方文档

    数据库升级:

    以上的方法验证后正确,整理一下:
    1.在对应的module的gradle文件里配置:

    android{
        //每次更改表后,必须改一下schemaVersion 的值,不然崩溃
         greendao {
                schemaVersion 1//指定数据库版本号,更新操作会用到;
        //    daoPackage 'com.zhangqie.greendao.gen'//自动生成的dao的包名,包名默认是entity所在的包;
        //    targetGenDir 'src/main/java'//生成数据库文件的目录
        }
    }
    

    2.在对应的module的gradle文件里引入包:

    dependencies {
        compile 'com.github.yuweiguocn:GreenDaoUpgradeHelper:v2.0.2'
    }
    

    3.新建一个类ReleaseOpenHelper 继承自 DaoMaster.OpenHelper,在类中重写onUpgrade方法

    public class ReleaseOpenHelper extends DaoMaster.OpenHelper {
        public ReleaseOpenHelper(Context context, String name) {
            super(context, name);
        }
    
        @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);
                }
            },UserProfileDao.class);
        }
    }
    
    

    4.补充:ReleaseOpenHelper用在哪里?

    //GreenDao初始化这样写
    private void initDao(Context context) {
            final ReleaseOpenHelper helper = new ReleaseOpenHelper(context, "RFIDSign_ec_db");
            final Database db = helper.getWritableDb();
            DaoSession daoSession = new DaoMaster(db).newSession();
    
            //返回给调用的人这个dao进行数据库的操作
            UserProfileDao dao = daoSession.getUserProfileDao();
        }
    

    查询

    UserProfileDao userProfileDao = DatabaseManager.getInstance().getUserProfileDao();
    
    List<UserProfile>profiles=userProfileDao.queryBuilder().where(UserProfileDao.Properties.Name.eq("Zoyix")).list();//还有个unique方法,该方法若有多个会抛异常
    
    

    更新

    userProfileDao.getKey(profiles.get(0)); 
    //一定要拿的到这个值。对应的表必须有主键
    

    相关文章

      网友评论

          本文标题:GreenDao数据库笔记

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