Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære CRUD-operasjoner i Java | Grunnleggende Datastrukturer i Java
Java Datastrukturer

bookCRUD-operasjoner i Java

Grunnleggende operasjoner for en database

Du har fullført en praktisk oppgave om bibliotekadministrasjon, hvor du implementerte metoder for å legge til, hente og fjerne elementer fra en liste.

Disse operasjonene er grunnleggende for nesten alle lister og applikasjoner—de kalles CRUD-operasjoner!

CRUD står for CREATE, READ, UPDATE og DELETE, og representerer en liste over operasjoner som skal utføres på en database.

I vårt tilfelle, i forrige oppgave, fungerte klassen Library som vår database, nærmere bestemt listen over bøker. Du skrev grunnleggende operasjoner for å arbeide med denne listen, og tilpasset hver av dem noe. Du laget mer spesialiserte metoder for å hente en bok etter forfatter eller skaffe en liste over bøker utgitt etter et bestemt år.

Tilsvarende operasjoner brukes i store applikasjoner for å samhandle med databaser. Til slutt bør applikasjonen vår:

  1. Kunne opprette data i databasen;
  2. Kunne lese data fra databasen;
  3. Kunne oppdatere spesifikke data i databasen;
  4. Kunne slette data fra databasen.

Du har kanskje lagt merke til at du ikke implementerte oppdateringsmetoden i forrige oppgave.

La oss gjøre det nå:

Du må først hente boken etter ID for å oppdatere et element etter ID. For dette skal du implementere en metode som henter boken etter ID. Det er bedre å gjøre det på denne måten enn å implementere logikken for å hente en bok etter ID direkte i oppdateringsmetoden, siden du da kan gjenbruke denne metoden i andre funksjoner, noe som gjør den mer allsidig.

Library.java

Library.java

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

Løsningen ovenfor er et godt alternativ, men det finnes et lite problem. Du vil få en feilmelding hvis en slik ID ikke finnes i listen vår. Du må håndtere denne feilen og vise en melding på skjermen som indikerer at det ikke finnes en slik bok i listen (databasen).

Library.java

Library.java

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

Vi initialiserer først variabelen result som null i denne løsningen. Etter å ha implementert boksøk etter ID, utfører vi en sjekk for å se om resultatet vårt fortsatt er null. Hvis det er true, oppretter vi en ny udefinert bok. La oss gå videre til implementeringen av update-metoden:

Library.java

Library.java

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

Vi oppdaterte boken ved å oppdatere alle dens parametere. Det anbefales sterkt å gjøre det på denne måten, fordi hvis vi bare tildeler boken på nytt, kan uventede feil oppstå. På denne måten oppdaterer vi boken etter ID, og tildeler den på nytt til parameterne til den nye boken.

Nå skal vi bruke update-metoden og se hva som skjer:

Main.java

Main.java

copy
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); } }

Nå har Library-klassen alle CRUD-operasjoner.

Det anbefales å kopiere metodene som er vist i dette kapittelet og legge dem til i koden fra forrige oppgave, da denne oppdaterte koden vil være nyttig senere.

1. Hva betyr forkortelsen CRUD?

2. Hvorfor er det nødvendig å implementere CRUD-operasjoner i koden din?

3. Kan CRUD-operasjoner brukes med databaser?

question mark

Hva betyr forkortelsen CRUD?

Select the correct answer

question mark

Hvorfor er det nødvendig å implementere CRUD-operasjoner i koden din?

Select the correct answer

question mark

Kan CRUD-operasjoner brukes med databaser?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 4

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

bookCRUD-operasjoner i Java

Sveip for å vise menyen

Grunnleggende operasjoner for en database

Du har fullført en praktisk oppgave om bibliotekadministrasjon, hvor du implementerte metoder for å legge til, hente og fjerne elementer fra en liste.

Disse operasjonene er grunnleggende for nesten alle lister og applikasjoner—de kalles CRUD-operasjoner!

CRUD står for CREATE, READ, UPDATE og DELETE, og representerer en liste over operasjoner som skal utføres på en database.

I vårt tilfelle, i forrige oppgave, fungerte klassen Library som vår database, nærmere bestemt listen over bøker. Du skrev grunnleggende operasjoner for å arbeide med denne listen, og tilpasset hver av dem noe. Du laget mer spesialiserte metoder for å hente en bok etter forfatter eller skaffe en liste over bøker utgitt etter et bestemt år.

Tilsvarende operasjoner brukes i store applikasjoner for å samhandle med databaser. Til slutt bør applikasjonen vår:

  1. Kunne opprette data i databasen;
  2. Kunne lese data fra databasen;
  3. Kunne oppdatere spesifikke data i databasen;
  4. Kunne slette data fra databasen.

Du har kanskje lagt merke til at du ikke implementerte oppdateringsmetoden i forrige oppgave.

La oss gjøre det nå:

Du må først hente boken etter ID for å oppdatere et element etter ID. For dette skal du implementere en metode som henter boken etter ID. Det er bedre å gjøre det på denne måten enn å implementere logikken for å hente en bok etter ID direkte i oppdateringsmetoden, siden du da kan gjenbruke denne metoden i andre funksjoner, noe som gjør den mer allsidig.

Library.java

Library.java

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

Løsningen ovenfor er et godt alternativ, men det finnes et lite problem. Du vil få en feilmelding hvis en slik ID ikke finnes i listen vår. Du må håndtere denne feilen og vise en melding på skjermen som indikerer at det ikke finnes en slik bok i listen (databasen).

Library.java

Library.java

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

Vi initialiserer først variabelen result som null i denne løsningen. Etter å ha implementert boksøk etter ID, utfører vi en sjekk for å se om resultatet vårt fortsatt er null. Hvis det er true, oppretter vi en ny udefinert bok. La oss gå videre til implementeringen av update-metoden:

Library.java

Library.java

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

Vi oppdaterte boken ved å oppdatere alle dens parametere. Det anbefales sterkt å gjøre det på denne måten, fordi hvis vi bare tildeler boken på nytt, kan uventede feil oppstå. På denne måten oppdaterer vi boken etter ID, og tildeler den på nytt til parameterne til den nye boken.

Nå skal vi bruke update-metoden og se hva som skjer:

Main.java

Main.java

copy
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); } }

Nå har Library-klassen alle CRUD-operasjoner.

Det anbefales å kopiere metodene som er vist i dette kapittelet og legge dem til i koden fra forrige oppgave, da denne oppdaterte koden vil være nyttig senere.

1. Hva betyr forkortelsen CRUD?

2. Hvorfor er det nødvendig å implementere CRUD-operasjoner i koden din?

3. Kan CRUD-operasjoner brukes med databaser?

question mark

Hva betyr forkortelsen CRUD?

Select the correct answer

question mark

Hvorfor er det nødvendig å implementere CRUD-operasjoner i koden din?

Select the correct answer

question mark

Kan CRUD-operasjoner brukes med databaser?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 4
some-alt