1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| 1. build.gradle 依赖 确保你的 app 模块的 build.gradle(通常是 app/build.gradle)包含以下依赖:
// Room 依赖 分为java和kotlin //java的 def room_version = "2.5.2" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version"
//kotlin必须 kapt plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) id 'kotlin-kapt' }
implementation "androidx.room:room-runtime:$room_version" implementation "androidx.room:room-ktx:$room_version" // 可选,支持协程 kapt "androidx.room:room-compiler:$room_version" // Kotlin 必须用 kapt
import androidx.room.Entity; import androidx.room.PrimaryKey;
@Entity public class User { @PrimaryKey(autoGenerate = true) public int userId;
public String name; public int age;
public User(String name, int age) { this.name = name; this.age = age; } }
import androidx.room.Dao; import androidx.room.Insert; import androidx.room.Query; import java.util.List;
@Dao public interface UserDao {
@Insert void insertUser(User user);
@Query("SELECT * FROM User") List<User> getAllUsers(); }
import androidx.room.Database; import androidx.room.RoomDatabase;
@Database(entities = {User.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract UserDao userDao(); }
// 在Activity或Application里初始化 AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "my-database").build();
// 插入数据(注意不能在主线程,建议放到子线程) new Thread(() -> { UserDao userDao = db.userDao(); BookDao bookDao = db.bookDao();
User user = new User("Alice", 30); userDao.insertUser(user);
Book book = new Book("Android Development", 1); // 这里1为userId,需要先获取 bookDao.insertBook(book);
List<User> users = userDao.getAllUsers(); List<Book> books = bookDao.getBooksByUserId(1);
// 处理结果 }).start();
import android.app.Application; import androidx.room.Room;
public class MyApp extends Application {
private static AppDatabase database;
@Override public void onCreate() { super.onCreate(); database = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "my-database") .build(); }
// 对外暴露获取数据库实例的方法 public static AppDatabase getDatabase() { return database; } }
其他页面调用 AppDatabase db = MyApp.getDatabase(); UserDao userDao = db.userDao();
|