美文网首页
Android Room 使用

Android Room 使用

作者: 一个不安分的Android开发 | 来源:发表于2021-02-17 16:47 被阅读0次

    官网介绍:https://developer.android.google.cn/training/data-storage/room

    Room 是在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库。

    Room 包含 3 个重要部分:

    • 数据库:包含数据库持有者,并作为应用已保留的持久关系型数据的底层连接的主要接入点。
    • Entity:表示数据库中的表。
    • DAO:包含用于访问数据库的方法。

    基本使用步骤:

    1、导入配置

    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"
        }
    
    

    2、创建表

        @Entity
        public class User {
            @PrimaryKey
            public int uid;
    
            @ColumnInfo(name = "first_name")
            public String firstName;
    
            @ColumnInfo(name = "last_name")
            public String lastName;
        }
    
    

    参考:https://developer.android.google.cn/training/data-storage/room/defining-data

    3、创建Dao

    包含访问数据库的一系列方法。

        @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);
        }
    
    

    参考:https://developer.android.google.cn/training/data-storage/room/accessing-data

    4、创建数据库

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

    5、使用

        AppDatabase db = Room.databaseBuilder(getApplicationContext(),
                AppDatabase.class, "database-name").build();
        db.userDao().insert(new User());
    

    相关文章

      网友评论

          本文标题:Android Room 使用

          本文链接:https://www.haomeiwen.com/subject/yuoixltx.html