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()