【Kotlin/Room】@RewriteQueriesToDropUnusedColumnsアノテーションで必要なカラムのみ取得する

この記事からわかること
- Android Studio/KotlinでRoomデータベースの使い方
- @RewriteQueriesToDropUnusedColumnsアノテーションの役割
- 必要なカラムのデータのみを取得するには?
\ アプリをリリースしました /
公式リファレンス:RewriteQueriesToDropUnusedColumns
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
Roomで特定のカラムだけのデータを取得する方法
RoomでUser
クラスを定義している場合にすべてのデータではなくnameプロパティ(カラム)だけのリストをデータベースから取得したい場合がありました。
以下のようなクエリだとuser_tableテーブルに格納されているすべてのカラムの情報を取得し、User
型にマッピングされます。
ですが欲しいのはnameプロパティのみを持ったリストだけを取得したいのです。これを叶えるのが@RewriteQueriesToDropUnusedColumns
アノテーションです。
@RewriteQueriesToDropUnusedColumns
@RewriteQueriesToDropUnusedColumns
はDaoのクエリに付与することで特定のカラムのみを取得することができるようになるアノテーションです。使用するためには特定のカラムのみを持ったデータクラスを定義する必要があります。
データクラスを定義したら、返り値のデータ型に特定のカラムのみのデータ型を指定し、@RewriteQueriesToDropUnusedColumns
を付与するだけです。
@RewriteQueriesToDropUnusedColumns
を付与しておくとコンパイル時に自動で特定のカラムのみを取得する以下のようなSQLクエリを構築してくれます。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。