0Pricing
Go Academy · Lekcja

sqlx: mapowanie struktur i nazwane zapytania

Get, Select i NamedExec w sqlx

sqlx: mapowanie struktur i nazwane zapytania 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.

Czym jest sqlx?

github.com/jmoiron/sqlx rozszerza database/sql o skanowanie do struktur, nazwane zapytania i wiązanie parametrów w zapytaniach. Jest zgodne z API database/sql.

sqlx.Open

Należy otworzyć połączenie z bazą danych za pomocą sqlx zamiast sql:

db, err := sqlx.Open("postgres", dsn)
if err != nil { log.Fatal(err) }

Get i Select

db.Get skanuje pojedynczy wiersz do struktury, a db.Select skanuje wiele wierszy do wycinka:

var user User
db.GetContext(ctx, &user, "SELECT * FROM users WHERE id=$1", id)

var users []User
db.SelectContext(ctx, &users, "SELECT * FROM users WHERE active=$1", true)

Tagi struktur

sqlx mapuje kolumny na pola struktury za pomocą tagu db:

type User struct {
    ID    int    `db:"id"`
    Name  string `db:"name"`
    Email string `db:"email"`
}

Nazwane zapytania

Należy używać nazwanych parametrów w składni :name i przekazywać strukturę lub mapę:

query := "INSERT INTO users (name, email) VALUES (:name, :email)"
_, err := db.NamedExecContext(ctx, query, user)

sqlx.In

sqlx.In rozwija wycinek do klauzuli SQL IN:

ids := []int{1, 2, 3}
query, args, _ := sqlx.In("SELECT * FROM users WHERE id IN (?)", ids)
query = db.Rebind(query)
db.SelectContext(ctx, &users, query, args...)

Rebind

db.Rebind(query) konwertuje symbole zastępcze ? (używane przez sqlx.In) na format właściwy dla sterownika ($1, $2 w PostgreSQL):

StructScan

Należy zeskanować pojedynczy wiersz do struktury za pomocą rows.StructScan:

rows, _ := db.QueryxContext(ctx, "SELECT * FROM users")
for rows.Next() {
    var u User
    rows.StructScan(&u)
}

MustExec

db.MustExec wykonuje zapytanie i wywołuje panikę w przypadku błędu — przydaje się podczas migracji schematu lub konfiguracji testów, gdy błędy zawsze mają być krytyczne.

db.MustExec(schema)

Unsafe

db.Unsafe() zwraca wersję, która po cichu ignoruje niezmapowane kolumny zamiast zwracać błąd — przydaje się, gdy zapytanie SELECT zwraca więcej kolumn, niż struktura ma pól.

sqlx a ORM

sqlx zapewnia pełną kontrolę nad SQL i wiązanie struktur w sposób natywny dla Go. ORM-y, takie jak GORM, ukrywają SQL, ale mogą generować nieoczekiwane zapytania. Należy używać sqlx, gdy potrzebna jest jawna kontrola nad SQL przy zachowaniu wygodnego skanowania.

Szybki test

Co robi db.SelectContext w sqlx?

Podsumowanie: sqlx

Najważniejsze informacje:

  • Get/Select skanują bezpośrednio do struktur za pomocą tagów db
  • Nazwane zapytania ze składnią :name i NamedExecContext
  • sqlx.In + Rebind dla klauzul IN z wycinkami
  • StructScan do skanowania każdego wiersza do struktury w pętlach

Często zadawane pytania

Czy lekcja „sqlx: mapowanie struktur i nazwane zapytania” jest bezpłatna?

Tak — pełny tekst „sqlx: mapowanie struktur i nazwane zapytania” 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 „sqlx: mapowanie struktur i nazwane zapytania”?

Get, Select i NamedExec w sqlx Ć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 „sqlx: mapowanie struktur i nazwane zapytania”?

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. database/sql i sterowniki
  2. sqlx: mapowanie struktur i nazwane zapytania
  3. pgx: wysokowydajny sterownik PostgreSQL
  4. Transakcje i migracje
← Powrót do Go Academy