Android Room 数据库使用教程
在数据库构建器中添加迁移。实体类对应数据库中的一张表。使用 @Entity 注解标记这个类,并为每个属性添加 @ColumnInfo 注解(可选)。DAO 接口用于定义访问数据库的方法。使用 @Dao 注解标记这个接口,并为每个操作添加相应的方法。创建一个抽象类,继承自 RoomDatabase,并使用 @Database 注解标记这个类。在应用程序中,使用 Room.databaseBuilde
Android Room 数据库使用教程
添加依赖项
添加 Room 依赖项
在项目的 build.gradle 文件中添加 Room 的依赖项:
dependencies {
def room_version = "2.4.2"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
}
添加 Kotlin 支持(如果使用 Kotlin)
如果项目使用 Kotlin,需要添加 Kotlin kapt 插件和相关依赖项:
plugins {
id 'kotlin-kapt'
}
dependencies {
kapt "androidx.room:room-compiler:$room_version"
implementation "androidx.room:room-runtime:$room_version"
implementation "androidx.room:room-ktx:$room_version"
}
创建实体类
定义实体类
实体类对应数据库中的一张表。使用 @Entity 注解标记这个类,并为每个属性添加 @ColumnInfo 注解(可选)。
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity(tableName = "users")
public class User {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "name")
private String name;
@ColumnInfo(name = "age")
private int age;
// 必须提供无参构造函数
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
// Getters and Setters
}
创建数据访问对象(DAO)
定义 DAO 接口
DAO 接口用于定义访问数据库的方法。使用 @Dao 注解标记这个接口,并为每个操作添加相应的方法。
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import androidx.room.Delete;
@Dao
public interface UserDao {
@Query("SELECT \* FROM users")
LiveData<List<User>> getAllUsers();
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertUser(User user);
@Update
void updateUser(User user);
@Delete
void deleteUser(User user);
@Query("SELECT * FROM users")
List<ImsiModel> caseAll();
}
创建数据库类
定义数据库类
创建一个抽象类,继承自 RoomDatabase,并使用 @Database 注解标记这个类。
import androidx.room.Database;
import androidx.room.RoomDatabase;
@Database(entities = {User.class}, version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao userDao();
private static volatile AppDatabase instance;
public static AppDatabase getInstance(Context context) {
if (instance == null) {
synchronized (AppDatabase.class) {
if (instance == null) {
instance = Room.databaseBuilder(context.getApplicationContext(),
AppDatabase.class, "app_database")
.allowMainThreadQueries()
.build();
}
}
}
return instance;
}
}
初始化数据库
获取数据库实例
在应用程序中,使用 Room.databaseBuilder() 方法创建一个数据库实例。
AppDatabase database = AppDatabase.getInstance(context);
使用数据库
插入数据
使用 DAO 接口的方法插入数据。
调用插入语句:userDao.insertUser(new User("John Doe", 25));
UserDao userDao = database.userDao();
new Thread(() -> {
userDao.insertUser(new User("John Doe", 25));
}).start();
查询数据
使用 DAO 接口的方法查询数据。
调用查询语句:usersLiveData = userDao.getAllUsers();
LiveData<List<User>> usersLiveData = userDao.getAllUsers();
usersLiveData.observeForever(users -> {
// 处理用户列表
});
Android Room 数据库查询语句
查询所有数据:@Query("SELECT \* FROM users")
LiveData<List<User>> getAllUsers();
根据 ID 查询单个用户:@Query("SELECT \* FROM users WHERE id = :userId")
User getUserById(int userId);
模糊查询、排序查询、分页查询、聚合查询、连接查询等。
使用事务
在 Android Room 数据库中使用事务可以通过以下步骤实现:
获取数据库实例。开始事务。执行数据库操作。标记事务成功(可选)。结束事务。
数据库迁移策略
增加数据库版本号。创建迁移类。在数据库构建器中添加迁移。处理无法迁移的情况。测试迁移。使用 MigrationTestHelper 进行迁移测试。避免数据丢失。保持迁移过程简单且快速。定期检查和更新迁移策略。
相关组织和人物
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)