Room学习五:存储复杂的数据类型

前言

Room是对SQLite的封装,官方推荐使用Room。该文档来自google官方文档。该文档里的代码是kotlin。

适用类型转换TypeConverter

例如Date类型
1. 声明Converters

class Converters {
    @TypeConverter
    fun fromTimestamp(value: Long?): Date? {
        return value?.let { Date(it) }
    }

    @TypeConverter
    fun dateToTimestamp(date: Date?): Long? {
        return date?.time?.toLong()
    }
}

这样,当写的时候会调用dateToTimestamp,读的时候会调用fromTimestamp
2. 使用

@Database(entities = arrayOf(User::class), version = 1)
@TypeConverters(Converters::class)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}
@Entity
data class User(private var birthday: Date?)
@Dao
interface UserDao {
    @Query("SELECT * FROM user WHERE birthday BETWEEN :from AND :to")
    fun findUsersBornBetweenDates(from: Date, to: Date): List
}

你可能感兴趣的:(Room学习五:存储复杂的数据类型)