Android-Room自定义类型

综合技术 简书 (源链)

Android-Room数据库(介绍)

Android-Room数据库-多表查询

Android—Room 数据库迁移(Migration)

前言

通常情况下,数据库存储的是基本类型 floatintString 等。但是有时需要存储自定义类型,比如Date,或者我们自定义的类。如果想在数据库中存储这样的值,我们就需要通知 Room 如何将我们自定义的类型转换为原始类型。

Type Converter

@Entity
public class Company {
    @PrimaryKey(autoGenerate = true)
    private int id;
    private String name;
    private int age;
    private String address;
    private double salary;
    private Date createDate;
    //构造方法的参数名要与字段名相同
    //否则会提示param不匹配
    public Company(String name, int age, String address, double salary,Date createDate) {
        this.name = name;
        this.age = age;
        this.address = address;
        this.salary = salary;
        this.createDate=createDate;
    }
    //省略了getter/setter方法
}

除了之前的字段外,我又添加了createDate字段,这是日期类型,如果想在数据库中存储它,这时候我们就需要创建类型转换器。

public class DateConverter {
    @TypeConverter
    public static Date revertDate(long value) {
        return new Date(value);
    }

    @TypeConverter
    public static long converterDate(Date value) {
        return value.getTime();
    }
}

在这个类中,我们使用了 @TypeConverterconverterDateDate 转换成数据库可以保存的类型, revertDate 将数据库保存的值转换成 Date

这样我们就可以使用该类了。

@Database(entities = {Department.class, Company.class}, version = 1, exportSchema = false)
@TypeConverters(DateConverter.class)
public abstract class DepartmentDatabase extends RoomDatabase {
   ...
}

如图,我们已经将 Date 插入到了数据库,并且通过查询拿出来。

除了将 @TypeConverters 放在 RoomDatabase 里面,还可以将它放在具体的 Dao 上面,但是这样只会影响到该 Dao 的方法。

通过 @TypeConverters 类型转换器,我们能够将非原始类型的值保存到数据库中。 未完待续

您可能感兴趣的

三种数据库【原创】 作为一个测试人员,学无止境,不仅仅需要精通本职工作,还需要了解和测试岗位相关的知识。下面看一下我们需要了解的三种数据库。 Oracle数据库:是分布式数据库,能轻松的实现数据仓库的操作。至少是一个表空间和数据库模式对象组成。 SQL Server数据库:是关系型数据库,SQL语句用来执行各种...
腾讯指纹授权认证开源方案-SOTER TENCENT SOTER是腾讯微信技术团队开源的指纹授权认证开源方案,遵循BSD开源协议。SOTER始于2015年, 腾讯与厂商合作并制定了生物认证平台与标准,目前支持Android设备, 已经在微信指纹支付、微信公众号/小程序指纹授权接口等场景中广泛应用。 SOTER 前端sdk轻量,后...
Where Do I Start? For the past few years, the bulk of my consulting work has been in corporate training. Many of the participants in my courses are people who have been...
Postmortem of Service Outage at 3.4M Concurrent Us... Fortnite hit a new peak of 3.4 million concurrent players last Sunday… and that didn’t come without issues! This blog post aims to share technical d...
Android转场动画一说 所谓转场动画,通俗的讲就是一个Activity跳转到另一个Activity是的动画。 Activity的转场动画很早就有了,5.0之前用的是overridePendingTransition()这个方法。在5.0之后,Google使用Material Design设计风格,进而有了的新的转场转场...
简书责编内容来自:简书 (源链) | 更多关于

阅读提示:酷辣虫无法对本内容的真实性提供任何保证,请自行验证并承担相关的风险与后果!
本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » Android-Room自定义类型



专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录