Query는 Room DB DAO 클래스에서 사용하는 기본 주석이다. 이 주석으로 데이터베이스를 읽기/쓰기 작업을 할 수 있다.
컴파일 타임에 Room이 User 테이블의 모든 칼럼을 조회하는 쿼리이다.
@Dao
interface MyDao{
@Query("SELECT * FROM user")
fun loadAllUsers(): Array<User>
}
WHERE 뒤에 조건을 추가하는 쿼리문이다. :minAge
를 보면 함수의 매개변수를 쿼리에서 사용할 수 있다. 핵 꿀
@Dao
interface MyDao{
@Query("SELECT * FROM user WHERE age > :minAge")
fun loadAllUserOlderThan(minAge: Int): Array<User>
}
매개변수를 하나 뿐만 아니라 여러가지를 전달할 수 있다.
@Dao
interface MyDao{
@Query("SELECT * FROM user WHERE age BETWEEN :minAge AND :maxAge")
fun loadAllUserBetweenAges(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>
}
Delete를 사용해서 user 테이블에서 id에따라서 해당 정보를 삭제한다.
@Dao
interface MyDao{
@Query("DELETE FROM user WHERE user_id = :userId")
fun deleteUserById(userId: Long): Int
}
여기에 정리한 쿼리 외에도 많은 예시가 많은데.. 너무 많아서 다음에 몰아서 정리해야겠다...
Room DB 스터디하는 김에 sql 공부하는 것도 좋을듯하다.
참고