Android ORM系列之GreenDao自定义类型转换器与代码混淆配置

有时候,我们的实体类中会有一些属性,但是数据库中没有对应的类型,这个时候我们就需要自定义转换器进行类型转换。很常见的处理就是Date类型一般如果精度要求不高的话我们会转换为Long类型进行存储,读取的的时候再讲其转换为Date类型。那么如果我们想要让它直接以时间字符串存储呢,这个也好办,GreenDao为我们提供了自定义类型转换的支持。

首先,我们需要实现PropertyConverter接口,实现里面的两个方法convertToEntityPropertyconvertToDatabaseValue,该接口需要两个泛型参数,第一个参数是实体类中的类型,第二个参数是数据库中存储的类型。现在假设我们需要将Date转换为String进行存储,那么接口的实现应该是这样的。

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

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

接下来我们进行转换

public class DateStringConverter implements PropertyConverter<Date,String> {
    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,接着就是我们的类型转换器的全类名。接着试试往数据库中插入一条数据,我们会发现他直接以字符串存储了,如图所示

最后附带一下混淆配置,给需要混淆的项目加入以下语句

-keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
    public static java.lang.String TABLENAME;
}
-keep class **$Properties

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 17:49:28

Android ORM系列之GreenDao自定义类型转换器与代码混淆配置的相关文章

Android ORM系列之GreenDao关联关系映射

上一篇文章对greenDao有一个整体的把握 Android ORM系列之GreenDao最佳实践.这篇文章将重点介绍GreenDao的关联关系的映射以及实体类的生成. 在GreenDao中,实体类的生成是通过Entity类来进行的,可以说一个Entity对象对应一个实体类.实体类中的属性可以通过Entity对象的方法进行添加,GreenDao会根据我们添加的属性自动生成实体类.我们可以通过一系列方法进行操作. 可以自定义一张表的表名 entity.setTableName("test"

[转]Android ORM系列之GreenDao最佳实践

GreenDAO是一个可以帮助Android开发者快速将Java对象映射到SQLite数据库的表单中的ORM解决方案,通过使用一个简单的面向对象API,开发者可以对Java对象进行存储.更新.删除和查询. GreenDao有两个项目,一个是生成dao和model的generator的项目,该项目是java项目,一个是用于android的核心jar包.在使用前,我们必须先生成dao和model. 首先加入依赖. compile 'de.greenrobot:greendao:2.0.0' comp

Android ORM系列之GreenDao最佳实践

GreenDAO是一个可以帮助Android开发者快速将Java对象映射到SQLite数据库的表单中的ORM解决方案,通过使用一个简单的面向对象API,开发者可以对Java对象进行存储.更新.删除和查询. GreenDao有两个项目,一个是生成dao和model的generator的项目,该项目是java项目,一个是用于android的核心jar包.在使用前,我们必须先生成dao和model. 首先加入依赖. compile 'de.greenrobot:greendao:2.0.0' comp

[转]Android自定义控件系列五:自定义绚丽水波纹效果

出处:http://www.2cto.com/kf/201411/353169.html 今天我们来利用Android自定义控件实现一个比较有趣的效果:滑动水波纹.先来看看最终效果图: 图一 效果还是很炫的:饭要一口口吃,路要一步步走,这里我们将整个过程分成几步来实现 一.实现单击出现水波纹单圈效果: 图二 照例来说,还是一个自定义控件,这里我们直接让这个控件撑满整个屏幕(对自定义控件不熟悉的可以参看我之前的一篇文章:Android自定义控件系列二:自定义开关按钮(一)).观察这个效果,发现应该

Android自定义控件系列三:自定义开关按钮(三)--- 自定义属性

尊重原创,转载请注明出处:http://blog.csdn.net/cyp331203/article/details/40855377 接之前的:Android自定义控件系列二:自定义开关按钮(一)和Android自定义控件系列三:自定义开关按钮(二)继续,今天要讲的就是如何在自定义控件中使用自定义属性,实际上这里有两种方法,一种是配合XML属性资源文件的方式,另一种是不需要XML资源文件的方式:下面我们分别来看看: 一.配合XML属性资源文件来使用自定义属性: 那么还是针对我们之前写的自定义

Android自定义控件系列五:自定义绚丽水波纹效果

尊重原创!转载请注明出处:http://blog.csdn.net/cyp331203/article/details/41114551 今天我们来利用Android自定义控件实现一个比较有趣的效果:滑动水波纹.先来看看最终效果图: 图一 效果还是很炫的:饭要一口口吃,路要一步步走,这里我们将整个过程分成几步来实现 一.实现单击出现水波纹单圈效果: 图二 照例来说,还是一个自定义控件,这里我们直接让这个控件撑满整个屏幕(对自定义控件不熟悉的可以参看我之前的一篇文章:Android自定义控件系列二

Android ORM数据库之GreenDao使用教程及源码分析

一.简介 1.Android ORM介绍 ?在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM 框架也就孕育而生了,现在市面上主流的框架有 OrmLite.SugarORM.Active Android.Realm 与 GreenDAO.下面先介绍下当前流行的5种ORM数据库框架: 1)OrmLite ?OrmLite不是Android 平台专用的ORM框架,它是

springmvc 类型转换器 自定义类型转换器

自定义类型转换器的步骤: 1.定义类型转换器 2.类型转换器的注册(在springmvc配置文件处理) 来解决多种日期格式的问题:

struts2基础----&gt;自定义类型转换器

这一章,我们开始struts2中自定义类型转换器的学习. 自定义类型转换器 一.定义一个继承于StrutsTypeConverter的转换类: package com.huhx.converter; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import o