Room系列专题
Android Jetpack之Room篇
Room Entity注解说明
Room Dao注解说明
Room Fts 虚拟表模块
Room DatabaseView 视图
Room SkipQueryVerification
Room TypeConverter 属性类型转换器
TypeConverter
将方法标记为类型转换器。一个类可以有任意多个@TypeConverter方法。
每个转换器方法应该接收一个具有非空返回类型的参数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public static class Converters {
@TypeConverter
public Date fromTimestamp(Long value) {
return value == null ? null : new Date(value);
}
@TypeConverter
public Long dateToTimestamp(Date date) {
if (date == null) {
return null;
} else {
return date.getTime();
}
}
}
|
TypeConverters
指定 Room 可以使用的其他类型转换器。TypeConverter被添加到元素的范围中,因此如果将它放在类/接口上,该类中的所有方法/字段都能够使用转换器。
- 如果您将它放在 Database 上,该数据库中的所有Daos和实体都可以使用它。
- 如果你把它放在 Dao 上,Dao中的所有方法都可以使用它。
- 如果你把它放在一个 Entity 上,实体的所有字段都可以使用它。
- 如果你把它放在POJO上,POJO的所有字段都可以使用它。
- 如果你把它放在一个 Entity 字段上,只有这个字段可以使用它。
- 如果你把它放在一个 Dao 方法上,这个方法的所有参数都可以使用它。
- 如果你把它放在一个 Dao 方法参数上,那么这个字段就可以使用它。
字段定义
1
2
3
4
5
6
|
@Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.FIELD})
@Retention(RetentionPolicy.CLASS)
public @interface TypeConverters {
//
Class<?>[] value();
}
|
例子
1
2
3
4
5
|
@Database(entities = {User.class}, version = 1)
@TypeConverters({Converters.class})
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao userDao();
}
|
如果你喜欢我的文章,可以关注我的掘金、公众号、博客、简书或者Github!
简书: https://www.jianshu.com/u/a2591ab8eed2
GitHub: https://github.com/bugyun
Blog: https://ruoyun.vip
掘金: https://juejin.im/user/56cbef3b816dfa0059e330a8/posts
CSDN: https://blog.csdn.net/zxloveooo
欢迎关注微信公众号
