groovy
dependencies {
// Room Database
implementation 'androidx.room:room-runtime:2.4.0'
annotationProcessor 'androidx.room:room-compiler:2.4.0'
}
@Entity(tableName = "books")
public class Book {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "title")
private String title;
@ColumnInfo(name = "author")
private String author;
// Getters and setters
// ...
}
@Dao
public interface BookDao {
@Insert
void insert(Book book);
@Update
void update(Book book);
@Delete
void delete(Book book);
@Query("SELECT * FROM books")
List<Book> getAllBooks();
}
@Database(entities = {Book.class}, version = 1)
public abstract class BookDatabase extends RoomDatabase {
public abstract BookDao bookDao();
private static BookDatabase instance;
public static synchronized BookDatabase getInstance(Context context) {
if (instance == null) {
instance = Room.databaseBuilder(context.getApplicationContext(),
BookDatabase.class, "book_database")
.fallbackToDestructiveMigration()
.build();
}
return instance;
}
}
public class MainActivity extends AppCompatActivity {
private BookDao bookDao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BookDatabase bookDatabase = BookDatabase.getInstance(this);
bookDao = bookDatabase.bookDao();
Book newBook = new Book();
newBook.setTitle("Android Programming");
newBook.setAuthor("John Smith");
bookDao.insert(newBook);
List<Book> allBooks = bookDao.getAllBooks();
for (Book book : allBooks) {
Log.d("Book", "Title: " + book.getTitle() + ", Author: " + book.getAuthor());
}
}
}