美文网首页
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