Go Academy · Lekcja

Operacje CRUD

Twórz, odczytuj, aktualizuj i usuwaj

Lekcja 2 z 413 kroki

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
Bezpłatny start

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

  1. Modele i AutoMigrate
  2. Operacje CRUD
  3. Powiązania
  4. Hooki i zakresy
← Powrót do Go Academy