行の取得

行の取得

sqlcを使用してデータベースから行を取得する方法について説明します。

単一行の取得(:one)

単一の行を取得するには、クエリアノテーション:oneを使用します:

-- name: GetAuthor :one
SELECT * FROM authors
WHERE id = $1 LIMIT 1;

このクエリは、指定されたIDに一致する単一の著者レコードを返します。

複数行の取得(:many)

複数の行を取得するには、クエリアノテーション:manyを使用します:

-- name: ListAuthors :many
SELECT * FROM authors
ORDER BY name;

このクエリは、名前順にソートされた全ての著者のスライスを返します。

生成されるGo関数

sqlcは、これらのSQLクエリから対応するGo関数を生成します。例えば:

func (q *Queries) GetAuthor(ctx context.Context, id int64) (Author, error) {
    // 実装
}

func (q *Queries) ListAuthors(ctx context.Context) ([]Author, error) {
    // 実装
}

使用例

生成された関数の使用例:

// 単一の著者を取得
author, err := queries.GetAuthor(ctx, 123)
if err != nil {
    return err
}

// 全ての著者をリスト
authors, err := queries.ListAuthors(ctx)
if err != nil {
    return err
}

原文:https://docs.sqlc.dev/en/latest/howto/retrieving-rows.html