Android 数据存储 Room

本来想查一下Android最新的数据存储知识,意外发现:官方推荐使用Room代替SQLite,那就学习一下把。

Room由三部分组成
  1. Database

  2. Entity

  3. DAO

    Room architecture diagram

安装

详见这里

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

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

    @ColumnInfo(name = "last_name")
    public String lastName;
}
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);

    @Delete
    void delete(User user);
}
使用
AppDatabase db = Room.databaseBuilder(getApplicationContext(),
        AppDatabase.class, "database-name").build();

下面是官方提到的注意事项:

Note: If your app runs in a single process, you should follow the singleton design pattern when instantiating an AppDatabase object. Each RoomDatabase instance is fairly expensive, and you rarely need access to multiple instances within a single process.

If your app runs in multiple processes, include enableMultiInstanceInvalidation() in your database builder invocation. That way, when you have an instance of AppDatabase in each process, you can invalidate the shared database file in one process, and this invalidation automatically propagates to the instances of AppDatabase within other processes.

参考文献

转载于:https://my.oschina.net/u/219974/blog/2877228

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将数据存入Room数据库,需要遵循以下步骤: 1. 定义实体类:创建一个数据模型类,用于表示要存储数据库中的数据。该类应使用@Entity注释进行注释,并指定表名和主键。 2. 创建DAO接口:创建一个DAO(数据访问对象)接口,用于定义要执行的数据库操作方法。该接口应使用@Dao注释进行注释。 3. 定义数据库:创建一个继承自RoomDatabase的抽象类,用于定义数据库和获取DAO对象的方法。该类应使用@Database注释进行注释,并指定实体类和数据库版本号。 4. 实现数据插入:在DAO接口中定义一个插入数据的方法,使用@Insert注释进行注释。 5. 创建数据库实例:在应用程序中创建一个Room数据库实例,然后使用该实例的DAO接口插入数据。 以下是一个示例代码: 1. 定义实体类 ``` @Entity(tableName = "user_table") public class User { @PrimaryKey(autoGenerate = true) private int id; private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` 2. 创建DAO接口 ``` @Dao public interface UserDao { @Insert(onConflict = OnConflictStrategy.IGNORE) void insert(User user); } ``` 3. 定义数据库 ``` @Database(entities = {User.class}, version = 1) public abstract class MyAppDatabase extends RoomDatabase { public abstract UserDao userDao(); } ``` 4. 实现数据插入 ``` User user = new User("Tom", 25); MyAppDatabase db = Room.databaseBuilder(getApplicationContext(), MyAppDatabase.class, "myDB").build(); db.userDao().insert(user); ``` 在这个例子中,我们创建了一个名为“user_table”的表,其中包含id、name和age字段。我们还定义了一个UserDao接口,其中包含一个插入User对象的方法。最后,我们在应用程序中创建了一个MyAppDatabase实例,并使用该实例的UserDao接口插入数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值