Commit f172a56a90a94dcb9ffe5c1d2a60cfafb4e2b386

Authored by 张道锋
1 parent 384bd868

no message

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 +}