Commit f172a56a90a94dcb9ffe5c1d2a60cfafb4e2b386
1 parent
384bd868
Exists in
yxb_dev
and in
2 other branches
no message
Showing
4 changed files
with
87 additions
and
2 deletions
Show diff stats
app/src/main/assets/migrations/1.sql
| 1 | ALTER table message add COLUMN test TEXT | 1 | ALTER table message add COLUMN test TEXT |
| 2 | -UPDATE message SET test = 'sql默认' WHERE tes t= NULL--试过了,执行了,但是没有结果,并没有更新数据库内容,可以使用下面的语句代替 尽量不要使用注释 | ||
| 3 | -UPDATE message SET test = '' WHERE tes t= NULL | ||
| 4 | \ No newline at end of file | 2 | \ No newline at end of file |
| 3 | +UPDATE message SET test = 'sql默认' WHERE test= NULL--试过了,执行了,但是没有结果,并没有更新数据库内容,可以使用下面的语句代替 尽量不要使用注释 | ||
| 4 | +UPDATE message SET test = '' WHERE test= NULL |
app/src/main/java/com/shunzhi/parent/annotation/AddColumn.java
0 → 100644
| @@ -0,0 +1,19 @@ | @@ -0,0 +1,19 @@ | ||
| 1 | +package com.shunzhi.parent.annotation; | ||
| 2 | + | ||
| 3 | +import java.lang.annotation.ElementType; | ||
| 4 | +import java.lang.annotation.Retention; | ||
| 5 | +import java.lang.annotation.RetentionPolicy; | ||
| 6 | +import java.lang.annotation.Target; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * Created by 10501 on 2018/3/28.<br/> | ||
| 10 | + * 升级数据库版本使用,在新加字段时添加此注解<br/> | ||
| 11 | + * 只写了int类型和String类型的,其他需要的话自己写吧<br/> | ||
| 12 | + * 如果我没写完,谁想用谁写吧 | ||
| 13 | + * | ||
| 14 | + */ | ||
| 15 | +@Retention(RetentionPolicy.RUNTIME) | ||
| 16 | +@Target(ElementType.FIELD) | ||
| 17 | +public @interface AddColumn { | ||
| 18 | + int version(); | ||
| 19 | +} |
app/src/main/java/com/shunzhi/parent/annotation/VersionHelper.java
0 → 100644
| @@ -0,0 +1,50 @@ | @@ -0,0 +1,50 @@ | ||
| 1 | +package com.shunzhi.parent.annotation; | ||
| 2 | + | ||
| 3 | +import android.text.TextUtils; | ||
| 4 | +import android.util.SparseArray; | ||
| 5 | + | ||
| 6 | +import org.greenrobot.greendao.annotation.Entity; | ||
| 7 | + | ||
| 8 | +import java.lang.reflect.Field; | ||
| 9 | +import java.util.ArrayList; | ||
| 10 | +import java.util.List; | ||
| 11 | + | ||
| 12 | +import timber.log.Timber; | ||
| 13 | + | ||
| 14 | +/** | ||
| 15 | + * Created by 10501 on 2018/3/28. | ||
| 16 | + */ | ||
| 17 | + | ||
| 18 | +public class VersionHelper { | ||
| 19 | + private static final String sql_insert = "ALTER table %s INSERT ADD COLUMN %s %s"; | ||
| 20 | + private static final String sql_update = "UPDATE table message SET %s = '%s' WHERE %s = '%s'"; | ||
| 21 | + | ||
| 22 | + public static SparseArray<List<String>> init(Class clazz,String dbName) { | ||
| 23 | + SparseArray<List<String>> array = new SparseArray<>(); | ||
| 24 | + Field[] fields = clazz.getDeclaredFields(); | ||
| 25 | + for (Field field : fields) { | ||
| 26 | + AddColumn column = field.getAnnotation(AddColumn.class); | ||
| 27 | + if (column != null) { | ||
| 28 | + Timber.i("---==== :fieldName= %s version :%s fieldClass : %s", field.getName() | ||
| 29 | + , column.version(), field.getType()); | ||
| 30 | + Integer version = column.version(); | ||
| 31 | + List<String> sqlList = array.get(version); | ||
| 32 | + if (sqlList == null) { | ||
| 33 | + sqlList = new ArrayList<>(); | ||
| 34 | + array.put(version, sqlList); | ||
| 35 | + } | ||
| 36 | + if (field.getType().getSimpleName().equalsIgnoreCase("string")) { | ||
| 37 | + String sql = String.format(sql_insert, dbName, field.getName(), "TEXT"); | ||
| 38 | + sqlList.add(sql); | ||
| 39 | + } else if ("integer".equalsIgnoreCase(field.getType().getSimpleName())) { | ||
| 40 | + String sql = String.format(sql_insert, dbName, field.getName(), "INTEGER"); | ||
| 41 | + sqlList.add(sql); | ||
| 42 | + } else { | ||
| 43 | + //其他类型使用到的时候再写 | ||
| 44 | + Timber.i("类型检测失败"); | ||
| 45 | + } | ||
| 46 | + } | ||
| 47 | + } | ||
| 48 | + return array; | ||
| 49 | + } | ||
| 50 | +} |
app/src/main/java/com/shunzhi/parent/annotation/VersionTest.java
0 → 100644
| @@ -0,0 +1,16 @@ | @@ -0,0 +1,16 @@ | ||
| 1 | +package com.shunzhi.parent.annotation; | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * Created by 10501 on 2018/3/28. | ||
| 5 | + */ | ||
| 6 | + | ||
| 7 | +public class VersionTest { | ||
| 8 | + @AddColumn(version = 1) | ||
| 9 | + private String name; | ||
| 10 | + | ||
| 11 | + @AddColumn(version = 2) | ||
| 12 | + Integer age; | ||
| 13 | + | ||
| 14 | + String area; | ||
| 15 | + | ||
| 16 | +} |