greenDAO3 入门(配置,基本操作,数据库升级) - 简书
该文章的最后一部分数据库的升级,用了一个三方的库,其实就是overflow里的一个大神写的一个类,详见以下网址:android - GreenDAO schema update and data migration? - Stack Overflow
数据库升级:
以上的方法验证后正确,整理一下:
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));
//一定要拿的到这个值。对应的表必须有主键
网友评论