Operacje CRUD
Twórz, odczytuj, aktualizuj i usuwaj
Operacje CRUD to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.
Operacje CRUD w GORM
GORM zamienia cztery podstawowe operacje — Create, Read, Update, Delete — na wywołania metod obiektu *gorm.DB. Przekazuje się wskaźniki do struktur, a GORM tworzy kod SQL.
Create
Create wstawia rekord. Po jego wykonaniu GORM uzupełnia w strukturze klucz główny i znaczniki czasu pobrane z bazy danych.
user := User{Name: "Ada", Email: "ada@example.com"}
result := db.Create(&user)
fmt.Println(user.ID, result.RowsAffected)Odczyt za pomocą First
First pobiera pierwszy pasujący rekord uporządkowany według klucza głównego. Przekaż wskaźnik, aby otrzymać wynik; warunki przekaż jako dodatkowe argumenty.
var user User
db.First(&user, 1) // by primary key
db.First(&user, "email = ?", "ada@example.com")Odczyt wielu rekordów za pomocą Find
Find ładuje wiele wierszy do slice'a. Bez warunków zwraca wszystkie wiersze, a z użyciem Where filtruje wyniki.
var users []User
db.Where("age > ?", 18).Find(&users)Aktualizowanie
Save aktualizuje wszystkie pola rekordu. Update i Updates zmieniają określone kolumny, co zapobiega nadpisaniu pól, których nie zamierzano modyfikować.
db.Model(&user).Update("name", "Ada L.")
db.Model(&user).Updates(User{Name: "Ada", Age: 36})Pułapka wartości zerowych
Podczas aktualizowania za pomocą struktury GORM ignoruje pola o wartości zerowej (0, false, ""). Aby zaktualizować kolumnę do wartości zerowej, przekaż mapę zamiast struktury.
db.Model(&user).Updates(map[string]interface{}{"age": 0, "active": false})Delete
Delete usuwa rekord. Jeśli model ma pole DeletedAt, jest to miękkie usuwanie — ustawiany jest znacznik czasu zamiast usunięcia wiersza.
db.Delete(&user, 1)Symulacja CRUD możliwa do uruchomienia
GORM wymaga prawdziwej bazy danych, dlatego ten przykład możliwy do uruchomienia odwzorowuje tworzenie, odczyt, aktualizowanie i usuwanie na slice przechowywanym w pamięci, aby pokazać cykl życia rekordu.
package main
import "fmt"
type User struct {
ID int
Name string
}
func main() {
var users []User
next := 1
// Create
u := User{ID: next, Name: "Ada"}
users = append(users, u)
next++
// Read
fmt.Println("read:", users[0])
// Update
users[0].Name = "Ada L."
fmt.Println("updated:", users[0])
// Delete
users = users[:0]
fmt.Println("count after delete:", len(users))
}Sprawdzanie błędów
Każde wywołanie GORM zwraca obiekt *gorm.DB, którego pole Error zawiera ewentualny błąd. Brak rekordu powoduje zwrócenie gorm.ErrRecordNotFound przez First.
if err := db.First(&user, 99).Error; err == gorm.ErrRecordNotFound {
fmt.Println("no such user")
}Łączenie metod
GORM korzysta z łańcuchowego konstruktora: db.Where(...).Order(...).Limit(...).Find(&users). Każda metoda zawęża zapytanie, a ostatnia metoda (Find, First) je wykonuje.
Wstawianie partii
Przekaż slice do Create, aby wstawić wiele wierszy za pomocą jednej instrukcji. CreateInBatches dzieli bardzo duże slice'y na części, aby zmieścić się w limitach.
db.Create(&[]User{{Name: "A"}, {Name: "B"}})Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat operacji CRUD.
Podsumowanie
Użytkownik poznał operacje CRUD:
- Create wstawia rekord i uzupełnia klucz główny
- First i Find odczytują odpowiednio pojedyncze oraz wiele wierszy
- Save, Update i Updates modyfikują dane; mapy wymuszają użycie wartości zerowych
- Delete wykonuje miękkie usuwanie, gdy istnieje DeletedAt
- Należy sprawdzać pole Error i łączyć metody w złożonych zapytaniach
Ucz się Go dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 51
- Lekcje
- 203
Często zadawane pytania
Czy lekcja „Operacje CRUD” jest bezpłatna?
Tak — pełny tekst „Operacje CRUD” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Operacje CRUD”?
Twórz, odczytuj, aktualizuj i usuwaj Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Go Academy?
Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Operacje CRUD”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?
Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Modele i AutoMigrate
- Operacje CRUD
- Powiązania
- Hooki i zakresy