dependencies {
implementation 'androidx.room:room-runtime:2.3.0'
annotationProcessor 'androidx.room:room-compiler:2.3.0'
}
@Entity(tableName = "users")
public class User {
@PrimaryKey
public int id;
@ColumnInfo(name = "name")
public String name;
@ColumnInfo(name = "age")
public int age;
}
@Dao
public interface UserDao {
@Insert
void insert(User user);
@Query("SELECT * FROM users")
List<User> getAllUsers();
}
public class MyDatabaseMigration extends RoomDatabase.Callback {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
}
@Override
public void onUpgrade(@NonNull SupportSQLiteDatabase db, int oldVersion, int newVersion) {
super.onUpgrade(db, oldVersion, newVersion);
}
}
@Database(entities = {User.class}, version = 2)
public abstract class MyDatabase extends RoomDatabase {
public abstract UserDao userDao();
private static MyDatabase instance;
public static synchronized MyDatabase getInstance(Context context) {
if (instance == null) {
instance = Room.databaseBuilder(context.getApplicationContext(), MyDatabase.class, "my_database")
.addCallback(new MyDatabaseMigration())
.build();
}
return instance;
}
}