Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära CRUD-Operationer i Java | Grundläggande Datastrukturer i Java
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java Datastrukturer

bookCRUD-Operationer i Java

Grundläggande operationer för en databas

Du har genomfört en praktisk uppgift om bibliotekshantering, där du implementerade metoder för att lägga till, hämta och ta bort element från en lista.

Dessa operationer är grundläggande för nästan alla listor och applikationer—de kallas för CRUD-operationer!

CRUD står för CREATE, READ, UPDATE och DELETE, vilket representerar en lista över operationer som utförs på en databas.

I vårt fall, i den föregående uppgiften, fungerade klassen Library som vår databas, specifikt listan över böcker. Du skrev grundläggande operationer för att arbeta med denna lista och anpassade var och en något. Du skapade mer fokuserade metoder för att hämta en bok efter författare eller att få en lista över böcker publicerade efter ett visst år.

Liknande operationer används i stora applikationer för att interagera med databaser. Slutligen bör vår applikation:

  1. Kunna skapa data i databasen;
  2. Kunna läsa data från databasen;
  3. Kunna uppdatera specifik data i databasen;
  4. Kunna ta bort data från databasen.

Du kanske har märkt att du inte implementerade update-metoden i den föregående uppgiften.

Låt oss göra det nu:

Du måste först hämta boken via ID för att uppdatera ett element med hjälp av ID. För detta kommer du att implementera en metod som hämtar boken via ID. Det är bättre att göra på detta sätt än att implementera logiken för att hämta en bok via dess ID direkt i metoden för att uppdatera boken, eftersom du kan återanvända denna metod i andra funktioner, vilket gör den mer mångsidig.

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 ovan är ett bra alternativ, men det finns ett litet problem. Du kommer att få ett felmeddelande om ett sådant ID inte finns i vår lista. Det är nödvändigt att hantera detta fel och visa ett meddelande på skärmen som indikerar att det inte finns någon sådan bok i listan (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 initierar först variabeln result som null i denna lösning. Efter att ha genomfört boksökningen via ID kontrollerar vi om vårt resultat fortfarande är null. Om det är true skapar vi en ny odefinierad bok. Låt oss gå vidare till 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 uppdaterade boken genom att uppdatera alla dess parametrar. Detta rekommenderas starkt eftersom om vi bara tilldelar om boken kan oväntade fel uppstå. På detta sätt uppdaterar vi boken via ID och tilldelar dess parametrar till den nya bokens parametrar.

Nu ska vi använda update-metoden och se vad som händer:

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

Nu har klassen Library alla CRUD-operationer.

Det rekommenderas att kopiera metoderna som visades i detta kapitel och lägga till dem i din kod från den tidigare uppgiften, eftersom denna uppdaterade kod kommer att vara användbar senare.

1. Vad betyder förkortningen CRUD?

2. Varför är det nödvändigt att implementera CRUD-operationer i din kod?

3. Kan CRUD-operationer användas med databaser?

question mark

Vad betyder förkortningen CRUD?

Select the correct answer

question mark

Varför är det nödvändigt att implementera CRUD-operationer i din kod?

Select the correct answer

question mark

Kan CRUD-operationer användas med databaser?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 4

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

bookCRUD-Operationer i Java

Svep för att visa menyn

Grundläggande operationer för en databas

Du har genomfört en praktisk uppgift om bibliotekshantering, där du implementerade metoder för att lägga till, hämta och ta bort element från en lista.

Dessa operationer är grundläggande för nästan alla listor och applikationer—de kallas för CRUD-operationer!

CRUD står för CREATE, READ, UPDATE och DELETE, vilket representerar en lista över operationer som utförs på en databas.

I vårt fall, i den föregående uppgiften, fungerade klassen Library som vår databas, specifikt listan över böcker. Du skrev grundläggande operationer för att arbeta med denna lista och anpassade var och en något. Du skapade mer fokuserade metoder för att hämta en bok efter författare eller att få en lista över böcker publicerade efter ett visst år.

Liknande operationer används i stora applikationer för att interagera med databaser. Slutligen bör vår applikation:

  1. Kunna skapa data i databasen;
  2. Kunna läsa data från databasen;
  3. Kunna uppdatera specifik data i databasen;
  4. Kunna ta bort data från databasen.

Du kanske har märkt att du inte implementerade update-metoden i den föregående uppgiften.

Låt oss göra det nu:

Du måste först hämta boken via ID för att uppdatera ett element med hjälp av ID. För detta kommer du att implementera en metod som hämtar boken via ID. Det är bättre att göra på detta sätt än att implementera logiken för att hämta en bok via dess ID direkt i metoden för att uppdatera boken, eftersom du kan återanvända denna metod i andra funktioner, vilket gör den mer mångsidig.

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 ovan är ett bra alternativ, men det finns ett litet problem. Du kommer att få ett felmeddelande om ett sådant ID inte finns i vår lista. Det är nödvändigt att hantera detta fel och visa ett meddelande på skärmen som indikerar att det inte finns någon sådan bok i listan (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 initierar först variabeln result som null i denna lösning. Efter att ha genomfört boksökningen via ID kontrollerar vi om vårt resultat fortfarande är null. Om det är true skapar vi en ny odefinierad bok. Låt oss gå vidare till 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 uppdaterade boken genom att uppdatera alla dess parametrar. Detta rekommenderas starkt eftersom om vi bara tilldelar om boken kan oväntade fel uppstå. På detta sätt uppdaterar vi boken via ID och tilldelar dess parametrar till den nya bokens parametrar.

Nu ska vi använda update-metoden och se vad som händer:

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

Nu har klassen Library alla CRUD-operationer.

Det rekommenderas att kopiera metoderna som visades i detta kapitel och lägga till dem i din kod från den tidigare uppgiften, eftersom denna uppdaterade kod kommer att vara användbar senare.

1. Vad betyder förkortningen CRUD?

2. Varför är det nödvändigt att implementera CRUD-operationer i din kod?

3. Kan CRUD-operationer användas med databaser?

question mark

Vad betyder förkortningen CRUD?

Select the correct answer

question mark

Varför är det nödvändigt att implementera CRUD-operationer i din kod?

Select the correct answer

question mark

Kan CRUD-operationer användas med databaser?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 4
some-alt