自定升级逻辑
GreenDao有做一个DevOpenHelper来处理创建和升级数据库的逻辑,但在升级里的处理是删除table重新创建,导致数据库已存在的用户数据丢失。
参考DevOpenHelper的实现自定义DownloadDBHelper,自定义升级逻辑。
在android数据库模块,新增的列可以通过alter语句做到,但要删除一列时通过drop却不行。
现在是通过整张表的复制实现的,先创建一张和当前的表一样的临时表,数据都在临时表中,将当前的表删除,创建一张新的表(当前我们期望的表),将数据从临时表恢复过来,删除临时表。
数据的增、删、改、查
一个疑问:更新某一列有没有更好的方式?
How can I read or update just a single column?
This is not what greenDAO is about. In greenDAO, you always read and update entities consisting of sever properties. This is not an issue in most cases: greenDAO is very fast and reading/updating all properties is typically done at rates >10.000 entities per second . If you still want to have per-column access, you can always resort to SQL.
官方回答是没有的,只能使用SQL语句做。
混淆
greenDAO 3
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties
If you do not use SQLCipher:
-dontwarn org.greenrobot.greendao.database.**
If you do not use RxJava:
-dontwarn rx.**
greenDAO 2
-keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties
高效的操作
不使用for循环单个处理,使用批处理命令。