0Pricing
Go Academy · Aula

sqlx: leitura de structs e consultas nomeadas

Get, Select e NamedExec com sqlx

sqlx: leitura de structs e consultas nomeadas é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.

O que é sqlx?

github.com/jmoiron/sqlx amplia database/sql com leitura em estruturas, consultas nomeadas e vinculação dentro da consulta. Ele é compatível com a API de database/sql.

sqlx.Open

Abra uma conexão de banco de dados usando sqlx em vez de sql:

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

Get e Select

db.Get lê uma única linha em uma estrutura; db.Select lê várias linhas em uma fatia:

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)

Tags de estruturas

sqlx mapeia colunas para campos de estruturas usando a tag db:

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

Consultas nomeadas

Use parâmetros nomeados com a sintaxe :name e passe uma estrutura ou um mapa:

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

sqlx.In

sqlx.In expande uma fatia em uma cláusula 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) converte marcadores ? (usados por sqlx.In) para o formato específico do controlador ($1, $2 para PostgreSQL):

StructScan

Leia uma linha individual em uma estrutura usando rows.StructScan:

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

MustExec

db.MustExec executa uma consulta e causa um pânico em caso de erro — é útil para migrações de esquema ou configuração de testes, em que os erros são sempre fatais.

db.MustExec(schema)

Unsafe

db.Unsafe() retorna uma versão que ignora silenciosamente colunas sem mapeamento em vez de retornar um erro — é útil quando o SELECT retorna mais colunas do que a estrutura possui de campos.

sqlx versus ORM

sqlx oferece controle total do SQL com vinculação de estruturas nativa do Go. ORMs como GORM ocultam o SQL, mas podem gerar consultas inesperadas. Use sqlx quando quiser SQL explícito com uma leitura conveniente.

Verificação rápida

O que db.SelectContext faz no sqlx?

Recapitulação: sqlx

Pontos principais:

  • Get/Select leem diretamente em estruturas usando tags db
  • Consultas nomeadas com a sintaxe :name e NamedExecContext
  • sqlx.In + Rebind para cláusulas IN com fatias
  • StructScan para leitura de estruturas por linha em loops

Perguntas Frequentes

A aula “sqlx: leitura de structs e consultas nomeadas” é grátis?

Sim — o texto completo de “sqlx: leitura de structs e consultas nomeadas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.

O que vou aprender em “sqlx: leitura de structs e consultas nomeadas”?

Get, Select e NamedExec com sqlx Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Go Academy?

Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “sqlx: leitura de structs e consultas nomeadas”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Go Academy?

Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. database/sql e drivers
  2. sqlx: leitura de structs e consultas nomeadas
  3. pgx: driver de alto desempenho para PostgreSQL
  4. Transações e migrações
← Voltar para Go Academy