Android 开发技术分享Android&iOS

Room学习一:概览

2019-03-01  本文已影响3人  crossroads

前言

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

三个重要组件

** Database:** 数据库持有者,后续直接看代码把
Entity: 表示数据库中的一个表格(table)
DAO: 包含访问数据库的方法

框架大概样子

1. 表格
@Entity
data class User(
    @PrimaryKey var uid: Int,
    @ColumnInfo(name = "first_name") var firstName: String?,
    @ColumnInfo(name = "last_name") var lastName: String?
)
2.SQL语句,访问操作数据
@Dao
interface UserDao {
    @Query("SELECT * FROM user")
    fun getAll(): List<User>

    @Query("SELECT * FROM user WHERE uid IN (:userIds)")
    fun loadAllByIds(userIds: IntArray): List<User>

    @Query("SELECT * FROM user WHERE first_name LIKE :first AND " +
           "last_name LIKE :last LIMIT 1")
    fun findByName(first: String, last: String): User

    @Insert
    fun insertAll(vararg users: User)

    @Delete
    fun delete(user: User)
}
3.数据库
@Database(entities = arrayOf(User::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}
4. 获得数据库实例,建议单例
val db = Room.databaseBuilder(
            applicationContext,
            AppDatabase::class.java, "database-name"
        ).build()
上一篇 下一篇

猜你喜欢

热点阅读