Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele CRUD-operaatiot Javassa | Osio
Javan Perustietorakenteet

CRUD-operaatiot Javassa

Pyyhkäise näyttääksesi valikon

Tietokannan perustoiminnot

Suoritit käytännön tehtävän kirjaston hallinnasta, jossa toteutit menetelmät elementtien lisäämiseksi, hakemiseksi ja poistamiseksi listasta.

Nämä toiminnot ovat keskeisiä lähes kaikissa listoissa ja sovelluksissa—niitä kutsutaan nimellä CRUD-toiminnot!

CRUD tarkoittaa CREATE (luo), READ (lue), UPDATE (päivitä) ja DELETE (poista), ja se kuvaa tietokannassa suoritettavia toimintoja.

Edellisessä tehtävässä luokka Library toimi tietokantana, tarkemmin sanottuna kirjalistana. Kirjoitit perustoiminnot tämän listan käsittelemiseksi, ja muokkasit kutakin hieman. Loit tarkempia menetelmiä kirjan hakemiseen tekijän perusteella tai kirjojen listaamiseen tietyn vuoden jälkeen julkaistuista teoksista.

Samanlaisia toimintoja käytetään suurissa sovelluksissa tietokantojen kanssa työskentelyyn. Lopulta sovelluksen tulisi:

  1. Pystyä luomaan tietoa tietokantaan;
  2. Pystyä lukemaan tietoa tietokannasta;
  3. Pystyä päivittämään tiettyä tietoa tietokannassa;
  4. Pystyä poistamaan tietoa tietokannasta.

Olet ehkä huomannut, ettet toteuttanut päivitysmenetelmää edellisessä tehtävässä.

Tehdään se nyt:

Sinun täytyy ensin hakea kirja ID:n perusteella, jotta voit päivittää elementin ID:n mukaan. Tätä varten toteutat menetelmän, joka hakee kirjan ID:n perusteella. Tämä tapa on parempi kuin toteuttaa kirjan hakulogiikka ID:n perusteella päivitysmenetelmän sisällä, sillä voit käyttää tätä menetelmää uudelleen muissa funktioissa, mikä tekee siitä monipuolisemman.

Library.java

Library.java

123456789
public Book findBookById(int id) { Book result; for (Book book : books) { if (book.getId() == id){ result = book; } } return result; }

Yllä oleva ratkaisu on hyvä vaihtoehto, mutta siinä on pieni ongelma. Saat virheilmoituksen, jos kyseistä ID:tä ei löydy listastamme. Tämä virhe täytyy käsitellä ja näytölle tulee näyttää viesti, joka ilmoittaa, ettei kyseistä kirjaa ole listassa (tietokannassa).

Library.java

Library.java

123456789101112
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; }

Aluksi alustamme muuttujan result arvoksi null tässä ratkaisussa. Toteutettuamme kirjan haun tunnuksen perusteella tarkistamme, onko tuloksemme edelleen null. Jos se on true, luomme uuden määrittelemättömän kirjan. Siirrytään seuraavaksi update-menetelmän toteutukseen:

Library.java

Library.java

123456789101112
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 } } }

Päivitimme kirjan päivittämällä kaikki sen parametrit. Suosittelen vahvasti tekemään näin, koska jos vain uudelleenosoitamme kirjan, voi ilmetä odottamattomia virheitä. Tällä tavalla päivitämme kirjan ID:n perusteella, asettamalla sen uudelleen uuden kirjan parametreihin.

Käytetään nyt update-menetelmää ja katsotaan, mitä tapahtuu:

Main.java

Main.java

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
package 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); } }

Nyt Library-luokassa on kaikki CRUD-operaatiot.

Suosittelen kopioimaan tässä luvussa esitetyt metodit ja lisäämään ne aiemman tehtävän koodiisi, sillä tätä päivitettyä koodia tarvitaan myöhemmin.

1. Mitä lyhenne CRUD tarkoittaa?

2. Miksi CRUD-toimintojen toteuttaminen koodissa on tarpeellista?

3. Voidaanko CRUD-toimintoja käyttää tietokantojen kanssa?

question mark

Mitä lyhenne CRUD tarkoittaa?

Valitse oikea vastaus

question mark

Miksi CRUD-toimintojen toteuttaminen koodissa on tarpeellista?

Valitse oikea vastaus

question mark

Voidaanko CRUD-toimintoja käyttää tietokantojen kanssa?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 1. Luku 4
some-alt