Android Kotlin DB - DAO를 사용하여 데이터 접근 (3)
Notepad96
·2020. 12. 7. 05:49
0. 이전 글
1. DAO
DAO란 Data Access Object 로서 데이터에 접근하기 위하여 사용하는 객체를 의미한다.
Room에는 @Dao라는 어노테이션이 존재하여 간단하게 DAO를 정의할 수 있다.
그리고 @Insert, @Delete, @Update, @Query 와 같은 어노테이션도 존재하여 SQL 문법의 관한 지식이 있다면 간단하게 DAO 기능들을 구현 가능하다.
2. 삽입, 삭제, 업데이트 쿼리문 (BookDao.kt)
import androidx.room.*
@Dao
interface BookDao {
/* 삽입 */
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertBooks(vararg books: Book)
@Insert
fun insertBook(book: Book)
@Query("INSERT INTO books(book_name, writer, price) VALUES (:name, :writer, :price)")
fun myInsertBook(name: String, writer: String, price: Int)
/* 삭제 */
@Query("DELETE FROM books where id = :id")
fun deleteBook(id: Long)
@Query("DELETE FROM books")
fun deleteAll()
/* 업데이트 */
@Query("UPDATE books SET book_name = :name WHERE id = :id")
fun updateName(id: Long, name: String)
@Query("UPDATE books SET writer = :writer WHERE id = :id")
fun updateWriter(id: Long, writer: String)
@Query("UPDATE books SET price = :price WHERE id = :id")
fun updatePrice(id: Long, price: Int)
/* 탐색 */
@Query("SELECT * FROM books")
fun getAll(): List<Book>
@Query("SELECT book_name FROM books")
fun getNameAll(): List<String>
@Query("SELECT * FROM books where id = :id")
fun getBook(id: Long): Book
@Query("SELECT COUNT(*) FROM books")
fun getCount(): Int
@Query("SELECT EXISTS ( SELECT * FROM books where id = :id)")
fun isBook(id: Long): Int
}
- @Insert를 사용하여서 간단하게 테이블에 데이터를 삽입하는 DAO 기능을 만들어 낼 수 있다.
마찬가지로 @Delete와 @Update를 사용하여서 삭제와 업데이트를 할 수도 있다.
- @Query 어노테이션을 사용하여 해당 쿼리문에 따른 동작을 할 수 있다.
탐색을 할 때뿐만 아니라 삽입, 삭제, 업데이트 또한 할 수 있으며 SQL 문법이 익숙하다면 Query를 사용하는 것이 더욱 편리하다.
함수들을 보면 인자를 갖는 함수들이 존재한다.
이 인자 값을 쿼리문에서 이용하기 위해서는 ':'를 붙인 후 인자명을 지정해 주면 된다.
ex) fun isBook(id: Long) => @Query(" ... where id = :id)")
※ 함수명은 함수명만 보아도 어떠한 기능을하는 지 알 수 있도록 직관성이 있게 만들어주어야 한다.
3. 참 조
'Android' 카테고리의 다른 글
Android Kotlin DB - insert, delete, update, search(삽입, 삭제, 업데이트, 탐색) (5) (0) | 2020.12.07 |
---|---|
Android Kotlin DB - AppDataBase 데이터베이스 생성 (4) (0) | 2020.12.07 |
Android Kotlin DB - Table 정의 (2) (0) | 2020.12.06 |
Android Kotlin DB - Room을 사용하여 데이터베이스 사용 (1) (0) | 2020.12.06 |
Android Kotlin 뒤로가기 버튼 생성 - parentActivityName (0) | 2020.12.04 |