https://github.com/kyleconroy/sqlc
database/sql
标准库提供的都是比较底层的接口。我们需要编写大量重复的代码。sqlc
可以根据我们编写的 SQL 语句生成类型安全的、地道的 Go 接口代码,我们要做的只是调用这些方法。
$ go get github.com/kyleconroy/sqlc/cmd/sqlc
$ go get github.com/go-sql-driver/mysql
编写 SQL 语句。在schema.sql
文件中编写建表语句
query.sql
文件中编写查询语句
-- name: GetAuthor :oneSELECT * FROM authorsWHERE id = $1 LIMIT 1;
sqlc
支持 PostgreSQL 和 MySQL,不过对 MySQL 的支持是实验性的。很多语法是不支持的,比如in
sqlc
额外只需要一个小小的配置文件sqlc.yaml
:
version: "1"packages:- name: "db"path: "./db"queries: "./query.sql"schema: "./schema.sql"
sqlc generate
type Author struct {ID int64Name stringBio sql.NullString}
// query.sql.gofunc (q *Queries) CreateAuthor(ctx context.Context, arg CreateAuthorParams) (Author, error)func (q *Queries) DeleteAuthor(ctx context.Context, id int64) errorfunc (q *Queries) GetAuthor(ctx context.Context, id int64) (Author, error)func (q *Queries) ListAuthors(ctx context.Context) ([]Author, error)
queries := db.New(db)authors, err := queries.ListAuthors(context.Background())
代码生成
-- name: <name> <cmd>


文章转载自golang算法架构leetcode技术php,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




