Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android ORM系列之GreenDao自定義類型轉換器與代碼混淆配置

Android ORM系列之GreenDao自定義類型轉換器與代碼混淆配置

編輯:關於Android編程

有時候,我們的實體類中會有一些屬性,但是數據庫中沒有對應的類型,這個時候我們就需要自定義轉換器進行類型轉換。很常見的處理就是Date類型一般如果精度要求不高的話我們會轉換為Long類型進行存儲,讀取的的時候再講其轉換為Date類型。那麼如果我們想要讓它直接以時間字符串存儲呢,這個也好辦,GreenDao為我們提供了自定義類型轉換的支持。

首先,我們需要實現PropertyConverter接口,實現裡面的兩個方法convertToEntityPropertyconvertToDatabaseValue,該接口需要兩個泛型參數,第一個參數是實體類中的類型,第二個參數是數據庫中存儲的類型。現在假設我們需要將Date轉換為String進行存儲,那麼接口的實現應該是這樣的。

public class DateStringConverter implements PropertyConverter {
    @Override
    public Date convertToEntityProperty(String databaseValue) {
        return null;
    }

    @Override
    public String convertToDatabaseValue(Date entityProperty) {
        return bull;
    }
}

接下來我們進行轉換

public class DateStringConverter implements PropertyConverter {
    private static final String DEFAULT_FORMAT=yyyy-MM-dd HH:mm:ss;

    @Override
    public Date convertToEntityProperty(String databaseValue) {
        return convert2Date(databaseValue,DEFAULT_FORMAT);
    }

    @Override
    public String convertToDatabaseValue(Date entityProperty) {
        return convert2String(entityProperty,DEFAULT_FORMAT);
    }
    public static String convert2String(Date date,String format){
        String currentDate=null;
        try {
            SimpleDateFormat formatter=new SimpleDateFormat(format);
            currentDate=formatter.format(date);
        }catch (Exception e){
            e.printStackTrace();
        }
        return currentDate;
    }
    public static Date convert2Date(String day, String format) {
        if (day == null || format == null)
            return null;
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        try {
            Date dt = formatter.parse(day);
            return dt;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
}

之後生成實體類

Entity type = schema.addEntity(Demo);
type.addStringProperty(test).customType(java.util.Date,cn.edu.zafu.greendao.db.converter.DateStringConverter);

addProperty的時候是對應的數據庫中的類型,這裡我們存儲為字符串,所以是addStringProperty,然後通過customType函數指定實體類中的類型,這裡是java.util.Date,接著就是我們的類型轉換器的全類名。接著試試往數據庫中插入一條數據,我們會發現他直接以字符串存儲了,如圖所示

這裡寫圖片描述

最後附帶一下混淆配置,給需要混淆的項目加入以下語句<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;"> -keepclassmembers class * extends de.greenrobot.dao.AbstractDao { public static java.lang.String TABLENAME; } -keep class **$Properties

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved