Android Room 使用

官網介紹:developer.android.google.cn/training/da…java

Room 是在 SQLite 上提供了一個抽象層,以便在充分利用 SQLite 的強大功能的同時,可以流暢地訪問數據庫。android

Room 包含 3 個重要部分:數據庫

  • 數據庫:包含數據庫持有者,並做爲應用已保留的持久關係型數據的底層鏈接的主要接入點。
  • Entity:表示數據庫中的表。
  • DAO:包含用於訪問數據庫的方法。

基本使用步驟:markdown

一、導入配置

dependencies {
      def room_version = "2.2.5"

      implementation "androidx.room:room-runtime:$room_version"
      annotationProcessor "androidx.room:room-compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor

      // optional - Kotlin Extensions and Coroutines support for Room
      implementation "androidx.room:room-ktx:$room_version"

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

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

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

複製代碼

二、建立表

@Entity
    public class User {
        @PrimaryKey
        public int uid;

        @ColumnInfo(name = "first_name")
        public String firstName;

        @ColumnInfo(name = "last_name")
        public String lastName;
    }

複製代碼

參考:developer.android.google.cn/training/da…oop

三、建立Dao

包含訪問數據庫的一系列方法。ui

@Dao
    public interface UserDao {
        @Query("SELECT * FROM user")
        List<User> getAll();

        @Query("SELECT * FROM user WHERE uid IN (:userIds)")
        List<User> loadAllByIds(int[] userIds);

        @Query("SELECT * FROM user WHERE first_name LIKE :first AND " + "last_name LIKE :last LIMIT 1")
        User findByName(String first, String last);

        @Insert
        void insertAll(User... users);
        
        @Insert
        void insert(User user);

        @Delete
        void delete(User user);
    }

複製代碼

參考:developer.android.google.cn/training/da…google

四、建立數據庫

@Database(entities = {User.class}, version = 1)
    public abstract class AppDatabase extends RoomDatabase {
        public abstract UserDao userDao();
    }
複製代碼

五、使用

AppDatabase db = Room.databaseBuilder(getApplicationContext(),
            AppDatabase.class, "database-name").build();
    db.userDao().insert(new User());
複製代碼
相關文章
相關標籤/搜索