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
- database/sql i sterowniki
- sqlx: mapowanie struktur i nazwane zapytania
- pgx: wysokowydajny sterownik PostgreSQL
- Transakcje i migracje