apply plugin: 'kotlin-kapt'
dependencies {
def room_version = "2.2.3"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version" // kotlin 기반 앱일 경우 kapt로 디펜던시 추가
implementation "androidx.room:room-ktx:$room_version" // Kotlin Extensions and Coroutines support
}
Save data in a local database using Room | Android Developers
@Entity(
tableName = "memo"
)
data class Memo(
@PrimaryKey(autoGenerate = true) val id: Int,
val title: String,
@ColumnInfo(name="contents") val contents: String
)
----
@Entity(
tableName = "image",
foreignKeys = [ForeignKey(
entity = Memo::class,
parentColumns = arrayOf("id"),
childColumns = arrayOf("memoId")
)]
)
data class Image(
@PrimaryKey(autoGenerate = true) val id: Int,
val memoId: Int,
val imageType: ImageType,
val image: String
)
@Entity
속성에 tableName
을 정해준다.@PrimaryKey
속성의 autoGenerate
를 사용한다.@ColumnInfo
속성에 name
을 추가한다.@Entity
속성에 foreignKeys
을 추가하여 관계를 지정해 준다.@Dao
interface MemoDao {
@Query("SELECT * FROM memo INNER JOIN image ON memo.id = image.memoId")
fun getAll(): List<Memo>
@Query("SELECT * FROM memo INNER JOIN image ON memo.id = image.memoId WHERE id = :id")
fun getOneMemo(id: Int): Memo
}
----
@Dao
interface MyDao {
@Query("SELECT * FROM user WHERE age BETWEEN :minAge AND :maxAge")
fun loadAllUsersBetweenAges(minAge: Int, maxAge: Int): Array<User>
@Query("SELECT * FROM user WHERE first_name LIKE :search " +
"OR last_name LIKE :search")
fun findUserWithName(search: String): List<User>
}