CRUD-Bewerkingen in Java
Basisbewerkingen voor een database
Je hebt een praktische opdracht voltooid over bibliotheekbeheer, waarbij je methoden hebt geïmplementeerd voor het toevoegen, ophalen en verwijderen van elementen uit een lijst.
Deze bewerkingen zijn fundamenteel voor vrijwel elke lijst en applicatie—ze staan bekend als CRUD-bewerkingen!
CRUD staat voor CREATE, READ, UPDATE en DELETE, en vertegenwoordigt een lijst van bewerkingen die op een database worden uitgevoerd.
In ons geval diende in de vorige opdracht de klasse Library als onze database, specifiek de boekenlijst. Je hebt fundamentele bewerkingen geschreven voor het werken met deze lijst, waarbij je elk van hen enigszins hebt aangepast. Je hebt meer gerichte methoden gemaakt voor het ophalen van een boek op auteur of het verkrijgen van een lijst met boeken die na een bepaald jaar zijn gepubliceerd.
Vergelijkbare bewerkingen worden gebruikt in grote applicaties om te communiceren met databases. Uiteindelijk moet onze applicatie:
- Gegevens kunnen aanmaken in de database;
- Gegevens kunnen lezen uit de database;
- Specifieke gegevens kunnen bijwerken in de database;
- Gegevens kunnen verwijderen uit de database.
Je hebt misschien gemerkt dat je de update-methode niet hebt geïmplementeerd in de vorige opdracht.
Laten we dat nu doen:
Je moet eerst het boek op ID ophalen om een element op ID bij te werken. Hiervoor implementeer je een methode die het boek op ID ophaalt. Het is beter om het op deze manier te doen dan om de logica voor het ophalen van een boek op ID in de boek-bijwerk-methode te verwerken, omdat je deze methode dan ook in andere functies kunt hergebruiken, waardoor deze veelzijdiger wordt.
Library.java
123456789public Book findBookById(int id) { Book result; for (Book book : books) { if (book.getId() == id){ result = book; } } return result; }
De bovenstaande oplossing is een goede optie, maar er is een klein probleem. Je krijgt een foutmelding als een dergelijk ID niet in onze lijst voorkomt. Deze fout moet worden afgehandeld en er moet een bericht op het scherm worden weergegeven dat er geen boek met dit ID in de lijst (database) staat.
Library.java
123456789101112public Book findBookById(int id) { Book result = null; for (Book book : books) { if (book.getId() == id){ result = book; } } if (result == null) { result = new Book("Unknown", "Unknown", 0); } return result; }
We initialiseren de variabele result aanvankelijk als null in deze oplossing. Na het uitvoeren van de boekzoekopdracht op ID, controleren we of ons resultaat nog steeds null is. Als het true is, maken we een nieuw niet-gedefinieerd boek aan.
Laten we verdergaan met het implementeren van de update-methode:
Library.java
123456789101112public void updateBookById(int id, Book newBook) { Book bookToBeUpdated = findBookById(id); for (Book book : books) { if (book.getId().equals(bookToBeUpdated.getId())) { book.setId(newBook.getId()); book.setAuthor(newBook.getAuthor()); book.setTitle(newBook.getTitle()); book.setYear(newBook.getYear()); return; // Ending loop execution, because update operation has executed successfully } } }
We hebben het boek bijgewerkt door alle parameters bij te werken. Het wordt sterk aanbevolen om dit op deze manier te doen, omdat bij het eenvoudigweg opnieuw toewijzen van het boek onverwachte fouten kunnen optreden. Op deze manier werken we het boek bij op basis van ID, waarbij we het toewijzen aan de parameters van het nieuwe boek.
Laten we nu de update-methode gebruiken en bekijken wat er gebeurt:
Main.java
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148package com.example; import java.util.ArrayList; import java.util.List; class Main { public static void main(String[] args) { Library library = new Library(); library.addBook(new Book("Java: The Complete Reference", "Herbert Schildt", 2019)); library.addBook(new Book("Effective Java", "Joshua Bloch", 2020)); library.addBook(new Book("Clean Code", "Robert C. Martin", 2008)); System.out.println("All books in the library:"); library.displayAllBooks(); Book newBook = new Book("Head First Java", "Katy Siera", 2022); library.updateBookById(2, newBook); System.out.println("\nAll books after using update method"); library.displayAllBooks(); } } class Book { private static Long nextId = 1L; private String title; private String author; private int year; private Long id; public Book(String title, String author, int year) { this.title = title; this.author = author; this.year = year; this.id = nextId++; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Override public String toString() { return "Book{" + "title='" + title + '\'' + ", author='" + author + '\'' + ", year=" + year + ", id=" + id + '}'; } } class Library { public List<Book> books = new ArrayList<>(); public void addBook(Book book) { books.add(book); } public void removeBookById(int id) { List<Book> booksToRemove = new ArrayList<>(); for (Book book : books) { if (book.getId() == id) { booksToRemove.add(book); } } books.removeAll(booksToRemove); } public List<Book> findBooksByAuthor(String author) { List<Book> booksWithSpecifiedAuthor = new ArrayList<>(); for (Book book : books) { if (book.getAuthor().equals(author)) { booksWithSpecifiedAuthor.add(book); } } return booksWithSpecifiedAuthor; } public List<Book> findBooksPublishedAfterYear(int year) { List<Book> booksPublishedAfterYear = new ArrayList<>(); for (Book book : books) { if (book.getYear() > year){ booksPublishedAfterYear.add(book); } } return booksPublishedAfterYear; } public Book findBookById(int id) { Book result = null; for (Book book : books) { if (book.getId() == id){ result = book; } } if (result == null) { result = new Book("Unknown", "Unknown", 0); } return result; } public void updateBookById(int id, Book newBook) { Book bookToBeUpdated = findBookById(id); for (Book book : books) { if (book.getId().equals(bookToBeUpdated.getId())) { book.setId(newBook.getId()); book.setAuthor(newBook.getAuthor()); book.setTitle(newBook.getTitle()); book.setYear(newBook.getYear()); return; // Ending loop execution, because update operation has executed successfully } } } public void displayAllBooks() { System.out.println(books); } }
Nu bevat de Library-klasse alle CRUD-operaties.
Het is aan te raden om de methoden die in dit hoofdstuk zijn getoond te kopiëren en toe te voegen aan je code van de vorige opdracht, aangezien deze bijgewerkte code later van pas zal komen.
1. Waar staat het acroniem CRUD voor?
2. Waarom is het noodzakelijk om CRUD-operaties in uw code te implementeren?
3. Kunnen CRUD-operaties worden gebruikt met databases?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Geweldig!
Completion tarief verbeterd naar 4
CRUD-Bewerkingen in Java
Veeg om het menu te tonen
Basisbewerkingen voor een database
Je hebt een praktische opdracht voltooid over bibliotheekbeheer, waarbij je methoden hebt geïmplementeerd voor het toevoegen, ophalen en verwijderen van elementen uit een lijst.
Deze bewerkingen zijn fundamenteel voor vrijwel elke lijst en applicatie—ze staan bekend als CRUD-bewerkingen!
CRUD staat voor CREATE, READ, UPDATE en DELETE, en vertegenwoordigt een lijst van bewerkingen die op een database worden uitgevoerd.
In ons geval diende in de vorige opdracht de klasse Library als onze database, specifiek de boekenlijst. Je hebt fundamentele bewerkingen geschreven voor het werken met deze lijst, waarbij je elk van hen enigszins hebt aangepast. Je hebt meer gerichte methoden gemaakt voor het ophalen van een boek op auteur of het verkrijgen van een lijst met boeken die na een bepaald jaar zijn gepubliceerd.
Vergelijkbare bewerkingen worden gebruikt in grote applicaties om te communiceren met databases. Uiteindelijk moet onze applicatie:
- Gegevens kunnen aanmaken in de database;
- Gegevens kunnen lezen uit de database;
- Specifieke gegevens kunnen bijwerken in de database;
- Gegevens kunnen verwijderen uit de database.
Je hebt misschien gemerkt dat je de update-methode niet hebt geïmplementeerd in de vorige opdracht.
Laten we dat nu doen:
Je moet eerst het boek op ID ophalen om een element op ID bij te werken. Hiervoor implementeer je een methode die het boek op ID ophaalt. Het is beter om het op deze manier te doen dan om de logica voor het ophalen van een boek op ID in de boek-bijwerk-methode te verwerken, omdat je deze methode dan ook in andere functies kunt hergebruiken, waardoor deze veelzijdiger wordt.
Library.java
123456789public Book findBookById(int id) { Book result; for (Book book : books) { if (book.getId() == id){ result = book; } } return result; }
De bovenstaande oplossing is een goede optie, maar er is een klein probleem. Je krijgt een foutmelding als een dergelijk ID niet in onze lijst voorkomt. Deze fout moet worden afgehandeld en er moet een bericht op het scherm worden weergegeven dat er geen boek met dit ID in de lijst (database) staat.
Library.java
123456789101112public Book findBookById(int id) { Book result = null; for (Book book : books) { if (book.getId() == id){ result = book; } } if (result == null) { result = new Book("Unknown", "Unknown", 0); } return result; }
We initialiseren de variabele result aanvankelijk als null in deze oplossing. Na het uitvoeren van de boekzoekopdracht op ID, controleren we of ons resultaat nog steeds null is. Als het true is, maken we een nieuw niet-gedefinieerd boek aan.
Laten we verdergaan met het implementeren van de update-methode:
Library.java
123456789101112public void updateBookById(int id, Book newBook) { Book bookToBeUpdated = findBookById(id); for (Book book : books) { if (book.getId().equals(bookToBeUpdated.getId())) { book.setId(newBook.getId()); book.setAuthor(newBook.getAuthor()); book.setTitle(newBook.getTitle()); book.setYear(newBook.getYear()); return; // Ending loop execution, because update operation has executed successfully } } }
We hebben het boek bijgewerkt door alle parameters bij te werken. Het wordt sterk aanbevolen om dit op deze manier te doen, omdat bij het eenvoudigweg opnieuw toewijzen van het boek onverwachte fouten kunnen optreden. Op deze manier werken we het boek bij op basis van ID, waarbij we het toewijzen aan de parameters van het nieuwe boek.
Laten we nu de update-methode gebruiken en bekijken wat er gebeurt:
Main.java
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148package com.example; import java.util.ArrayList; import java.util.List; class Main { public static void main(String[] args) { Library library = new Library(); library.addBook(new Book("Java: The Complete Reference", "Herbert Schildt", 2019)); library.addBook(new Book("Effective Java", "Joshua Bloch", 2020)); library.addBook(new Book("Clean Code", "Robert C. Martin", 2008)); System.out.println("All books in the library:"); library.displayAllBooks(); Book newBook = new Book("Head First Java", "Katy Siera", 2022); library.updateBookById(2, newBook); System.out.println("\nAll books after using update method"); library.displayAllBooks(); } } class Book { private static Long nextId = 1L; private String title; private String author; private int year; private Long id; public Book(String title, String author, int year) { this.title = title; this.author = author; this.year = year; this.id = nextId++; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Override public String toString() { return "Book{" + "title='" + title + '\'' + ", author='" + author + '\'' + ", year=" + year + ", id=" + id + '}'; } } class Library { public List<Book> books = new ArrayList<>(); public void addBook(Book book) { books.add(book); } public void removeBookById(int id) { List<Book> booksToRemove = new ArrayList<>(); for (Book book : books) { if (book.getId() == id) { booksToRemove.add(book); } } books.removeAll(booksToRemove); } public List<Book> findBooksByAuthor(String author) { List<Book> booksWithSpecifiedAuthor = new ArrayList<>(); for (Book book : books) { if (book.getAuthor().equals(author)) { booksWithSpecifiedAuthor.add(book); } } return booksWithSpecifiedAuthor; } public List<Book> findBooksPublishedAfterYear(int year) { List<Book> booksPublishedAfterYear = new ArrayList<>(); for (Book book : books) { if (book.getYear() > year){ booksPublishedAfterYear.add(book); } } return booksPublishedAfterYear; } public Book findBookById(int id) { Book result = null; for (Book book : books) { if (book.getId() == id){ result = book; } } if (result == null) { result = new Book("Unknown", "Unknown", 0); } return result; } public void updateBookById(int id, Book newBook) { Book bookToBeUpdated = findBookById(id); for (Book book : books) { if (book.getId().equals(bookToBeUpdated.getId())) { book.setId(newBook.getId()); book.setAuthor(newBook.getAuthor()); book.setTitle(newBook.getTitle()); book.setYear(newBook.getYear()); return; // Ending loop execution, because update operation has executed successfully } } } public void displayAllBooks() { System.out.println(books); } }
Nu bevat de Library-klasse alle CRUD-operaties.
Het is aan te raden om de methoden die in dit hoofdstuk zijn getoond te kopiëren en toe te voegen aan je code van de vorige opdracht, aangezien deze bijgewerkte code later van pas zal komen.
1. Waar staat het acroniem CRUD voor?
2. Waarom is het noodzakelijk om CRUD-operaties in uw code te implementeren?
3. Kunnen CRUD-operaties worden gebruikt met databases?
Bedankt voor je feedback!