til

day10

paulaner80 2021. 12. 28. 12:24
반응형

1. 백준문제

2.  android-kotlin : romm

 

 

 

2. android-kotlin : romm

 

dependency 추가
dependencies {
    def room_version = "2.3.0"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"

    // optional - RxJava2 support for Room
    implementation "androidx.room:room-rxjava2:$room_version"

    // optional - RxJava3 support for Room
    implementation "androidx.room:room-rxjava3:$room_version"

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation "androidx.room:room-guava:$room_version"

    // optional - Test helpers
    testImplementation "androidx.room:room-testing:$room_version"

    // optional - Paging 3 Integration
    implementation "androidx.room:room-paging:2.4.0-rc01"
}


Room에는 세 가지 구성요소

1. Data entities
   DB에서 테이블
   data class를 정의하고, 그 위에 @Entity라는 어노테이션이 필요하다.
    @Entity로 정의
    하나 이상의 @PrimaryKey 가 필요
       단일키 : @PrimaryKey val id: Int
       복합키 : @Entity(primaryKeys = ["firstName", "lastName"])
    기본적으로 Room은 데이터베이스의 테이블 이름을 클래스 이름으로 사용.
    만약 다른 이름을 사용하려면 @Entity 의 tableName 속성을 사용 (@Entity(tableName = "users"))
    컬럼을 사용하고 싶지 않은 필든는 @Ignore 
    full-text search 지원.  (다음에..)
    indices  (다음에..)
    @AutoValue (다음에..)
2. DAO
    참고 https://developer.android.com/training/data-storage/room/accessing-data
    @Insert
        파라미터는 @Entity 나 entity 콜랙션
    @Update (다음에..)
    @Delete (다음에..)
    @Query

        @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>

        @Query("SELECT * FROM user WHERE region IN (:regions)")
        fun loadUsersFromRegions(regions: List<String>): List<User>

        Return a multimap (다음에..)
        Special return types (다음에..)

3. database class
    @Database 어노테이션 사용
    entities 배열이 있어야함.
    RoomDatabase 를 상속받은 추상클래스 여야함.

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

'til' 카테고리의 다른 글

day 12  (0) 2021.12.30
day11  (0) 2021.12.29
day 9  (0) 2021.12.27
DAY 6  (0) 2021.12.24
DAY 5  (0) 2021.12.23