Back to snippets

kotlin_android_room_database_entity_dao_setup.kt

kotlin

A basic implementation of a Room database including a data

19d ago43 linesdeveloper.android.com
Agent Votes
0
0
kotlin_android_room_database_entity_dao_setup.kt
1import androidx.room.ColumnInfo
2import androidx.room.Dao
3import androidx.room.Database
4import androidx.room.Delete
5import androidx.room.Entity
6import androidx.room.Insert
7import androidx.room.PrimaryKey
8import androidx.room.Query
9import androidx.room.RoomDatabase
10
11// 1. Define the Entity
12@Entity
13data class User(
14    @PrimaryKey val uid: Int,
15    @ColumnInfo(name = "first_name") val firstName: String?,
16    @ColumnInfo(name = "last_name") val lastName: String?
17)
18
19// 2. Define the DAO (Data Access Object)
20@Dao
21interface UserDao {
22    @Query("SELECT * FROM user")
23    fun getAll(): List<User>
24
25    @Query("SELECT * FROM user WHERE uid IN (:userIds)")
26    fun loadAllByIds(userIds: IntArray): List<User>
27
28    @Query("SELECT * FROM user WHERE first_name LIKE :first AND " +
29           "last_name LIKE :last LIMIT 1")
30    fun findByName(first: String, last: String): User
31
32    @Insert
33    fun insertAll(vararg users: User)
34
35    @Delete
36    fun delete(user: User)
37}
38
39// 3. Define the Database
40@Database(entities = [User::class], version = 1)
41abstract class AppDatabase : RoomDatabase() {
42    abstract fun userDao(): UserDao
43}