안드로이드/Room

room 초기 설정

김어찐 2022. 9. 26. 10:24
728x90
package com.ej.room_exam

import androidx.room.Database
import androidx.room.RoomDatabase

@Database(entities = [Todo::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun todoDao(): TodoDao
}

 

package com.ej.room_exam

import androidx.room.*

@Dao
interface TodoDao {
    @Query("SELECT * FROM Todo")
    fun getAll() : List<Todo>

    @Insert
    fun insert(todo: Todo)

    @Update
    fun update(todo: Todo)

    @Delete
    fun delete(todo: Todo)

}

 

 

package com.ej.room_exam

import androidx.room.Entity
import androidx.room.PrimaryKey

@Entity
data class Todo(

    val title: String,
){
    @PrimaryKey(autoGenerate = true)
    var id: Int = 0
}

 

메인 액티비티에서 사용

package com.ej.room_exam

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.room.Room
import com.ej.room_exam.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
    lateinit var mainBinding: ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        mainBinding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(mainBinding.root)


        val db = Room.databaseBuilder(
            applicationContext,
            AppDatabase::class.java, "database-name"
        )
            .allowMainThreadQueries()
            .build()
        mainBinding.resultText.text = db.todoDao().getAll().toString()

        mainBinding.addButton.setOnClickListener {
            db.todoDao().insert(Todo(mainBinding.todoEdit.text.toString()))
            mainBinding.resultText.text= db.todoDao().getAll().toString()
        }

    }
}
728x90