View User.kt
@Entity(tableName = "users", indices = arrayOf(Index("full_name"), Index("phone_number"))) | |
data class User( | |
@PrimaryKey(autoGenerate = true) | |
var id: Int = 0, | |
@ColumnInfo(name = "full_name") | |
var name: String = "", | |
@ColumnInfo(name = "phone_number") | |
var phoneNumber: String = "" | |
) |
View User.kt
@Entity(tableName = "users", indices = arrayOf(Index("full_name"))) | |
data class User( | |
@PrimaryKey(autoGenerate = true) | |
var id: Int = 0, | |
@ColumnInfo(name = "full_name") | |
var name: String = "" | |
) |
View UserDao.kt
@Query("SELECT users.*, city FROM users JOIN addresses ON users.address_id = addresses.id") | |
fun getUsersWithCity(): LiveData<List<UserWithAddress>> |
View UserWithAddress.kt
data class UserWithAddress( | |
@Embedded | |
var user: User, | |
@ColumnInfo(name = "city") | |
var city: String? = "" | |
) |
View User.kt
@Entity(tableName = "users", , foreignKeys = arrayOf( | |
ForeignKey(entity = Address::class, parentColumns = arrayOf("id"), childColumns = arrayOf("address_id")) | |
) | |
data class User( | |
@PrimaryKey(autoGenerate = true) | |
var id: Int = 0, | |
var name: String = "", | |
@ColumnInfo(name = "address_id") | |
var address: Long? = null, | |
) |
View Address.kt
@Entity(tableName = "addresses") | |
data class Address( | |
@PrimaryKey | |
var id: Long = 0, | |
var state: String = "", | |
var city: String = "" | |
) |
View Address.kt
data class Address( | |
var state: String = "", | |
var city: String = "" | |
) |
View User.kt
@Entity(tableName = "users") | |
data class User( | |
@PrimaryKey(autoGenerate = true) | |
var id: Int = 0, | |
var name: String = "", | |
@Embedded | |
var address: Address | |
) |
View Init.kt
// Get instance | |
database = Room.databaseBuilder(context, AppDatabase::class.java, "app.db") | |
.build(); | |
// Example Usage | |
val userDao = database.userDao() |
View AppDatabase.kt
@Database(entities = arrayOf(User::class), version = 1) | |
abstract class AppDatabase : RoomDatabase() { | |
abstract fun userDao(): UserDao | |
} |