{"id":20388552,"url":"https://github.com/si3nloong/sqlgen","last_synced_at":"2025-04-12T10:41:58.701Z","repository":{"id":173035184,"uuid":"617251252","full_name":"si3nloong/sqlgen","owner":"si3nloong","description":"SQL code generator, no extra runtime cost! It's blazingly fast!!! 🚀🚀🚀","archived":false,"fork":false,"pushed_at":"2024-10-30T05:21:01.000Z","size":1579,"stargazers_count":16,"open_issues_count":15,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-30T08:31:52.562Z","etag":null,"topics":["blazingly-fast","codegen","generics","go-cli","mysql","no-reflection","postgres","sql","sqlite"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/si3nloong.png","metadata":{"files":{"readme":"README-zh.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-22T01:52:26.000Z","updated_at":"2024-10-28T12:34:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"3179e171-e556-4cb2-baee-31d2205e5846","html_url":"https://github.com/si3nloong/sqlgen","commit_stats":null,"previous_names":["si3nloong/sqlgen"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/si3nloong%2Fsqlgen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/si3nloong%2Fsqlgen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/si3nloong%2Fsqlgen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/si3nloong%2Fsqlgen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/si3nloong","download_url":"https://codeload.github.com/si3nloong/sqlgen/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248557002,"owners_count":21124156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blazingly-fast","codegen","generics","go-cli","mysql","no-reflection","postgres","sql","sqlite"],"created_at":"2024-11-15T03:11:23.653Z","updated_at":"2025-04-12T10:41:58.689Z","avatar_url":"https://github.com/si3nloong.png","language":"Go","readme":"# sqlgen\n\n[![构建](https://github.com/si3nloong/sqlgen/workflows/test/badge.svg?branch=main)](https://github.com/si3nloong/sqlgen/actions?query=workflow%3Atest)\n[![Go 报告](https://goreportcard.com/badge/github.com/si3nloong/sqlgen)](https://goreportcard.com/report/github.com/si3nloong/sqlgen)\n[![Go 覆盖率](https://codecov.io/gh/si3nloong/sqlgen/branch/main/graph/badge.svg)](https://codecov.io/gh/si3nloong/sqlgen)\n[![许可证](https://img.shields.io/github/license/si3nloong/sqlgen)](https://github.com/si3nloong/sqlgen/blob/main/LICENSE)\n\n\u003e sqlgen 不是 ORM，而是代码生成器。它会解析 Go 结构并为您生成所需的结构方法。\n\n## 什么是 sqlgen？\n\n- **sqlgen 基于代码优先方法** — 您不需要首先编写 SQL，而是使用 Go 代码。\n- **sqlgen 支持代码生成** — 我们生成烦人的部分，让您可以快速构建您的应用程序。\n- **sqlgen 优先性能** — 大多数事情将在编译时而不是运行时定义。\n- **sqlgen 支持泛型** — 我们使用泛型来消除运行时反射成本并减少内存分配。\n- **sqlgen 消除副作用** - 当修改模型时，您将获得预期的结果而不是副作用。\n\n## SQL 数据库支持\n\n| Driver     | Support |\n| ---------- | :-----: |\n| `mysql`    |   ✅    |\n| `postgres` |   ✅    |\n| `sqlite`   |   ✅    |\n\n## 快速入门\n\n1. 安装 sqlgen。\n\n   ```console\n    go install github.com/si3nloong/sqlgen/cmd/sqlgen@main\n   ```\n\n2. 定义您的结构。\n\n    \u003ch5 a\u003e\u003cstrong\u003e\u003ccode\u003emodel/user.go\u003c/code\u003e\u003c/strong\u003e\u003c/h5\u003e\n\n   ```go\n   package model\n\n   import \"time\"\n\n   type LongText string\n\n   type User struct {\n       ID      int64 `sql:\",auto_increment\"`\n       Name    string\n       Age     uint8\n       Address LongText\n       Created time.Time\n   }\n   ```\n\n3. 生成输出文件。\n\n   ```bash\n   # sqlgen generate \u003csource_file\u003e\n   sqlgen generate model/user.go\n   ```\n\n4. 生成的代码如下：\n\n   \u003ch5 a\u003e\u003cstrong\u003e\u003ccode\u003emodel/generated.go\u003c/code\u003e\u003c/strong\u003e\u003c/h5\u003e\n\n   ```go\n   // Code generated by sqlgen. DO NOT EDIT.\n\n   package model\n\n   import (\n       \"database/sql/driver\"\n       \"time\"\n\n       \"github.com/si3nloong/sqlgen/sequel/types\"\n   )\n\n   func (User) TableName() string {\n       return \"`user`\"\n   }\n   func (User) Columns() []string {\n       return []string{\"`id`\", \"`name`\", \"`age`\", \"`address`\", \"`created`\"}\n   }\n   func (v User) IsAutoIncr() {}\n   func (v User) PK() (columnName string, pos int, value driver.Value) {\n       return \"`id`\", 0, int64(v.ID)\n   }\n   func (v User) Values() []any {\n       return []any{int64(v.ID), string(v.Name), int64(v.Age), string(v.Address), time.Time(v.Created)}\n   }\n   func (v *User) Addrs() []any {\n       return []any{types.Integer(\u0026v.ID), types.String(\u0026v.Name), types.Integer(\u0026v.Age), types.String(\u0026v.Address), (*time.Time)(\u0026v.Created)}\n   }\n   ```\n\n更多帮助以开始使用：\n\n- [入门教程](/docs/GET_STARTED-zh.md) - 一份全面的指南，以帮助您入门\n- [CLI 指南](/docs/CLI-zh.md) 用于 CLI 命令的指南。\n- [FAQ（常见问题解答）](/docs/FAQ-zh.md) - 常见的问题解答。\n- [配置文件](/docs/CONFIGURATION-zh.md) - 配置代码生成。\n\n## 基准测试\n\n\u003cimg src=\"./docs/images/orm_benchmark.jpg\" /\u003e\n\n## 报告问题\n\n如果您认为发现了错误，或某些事情的行为不如您所期望，请在 GitHub 上提出[问题](https://github.com/si3nloong/sqlgen/issues)。\n\n## 贡献\n\n我们欢迎贡献，阅读我们的[贡献指南](https://github.com/si3nloong/sqlgen/blob/main/CONTRIBUTING.md)以了解更多关于对**sqlgen**进行贡献的信息。\n\n## 特别感谢\n\n感谢这些公司支持开源开发者 ❤\n\n[![GitHub](https://jstools.dev/img/badges/github.svg)](https://github.com/open-source)\n\n## 灵感来自\n\n- [在 Go 中不需要 ORM](https://medium.com/@enverbisevac/you-dont-need-orm-in-go-9216fb74cdfd)\n- [gqlgen](https://github.com/99designs/gqlgen)\n\n## 许可证\n\n[MIT](https://github.com/si3nloong/sqlgen/blob/main/LICENSE)\n\n版权所有 (c) 2023-present，SianLoong Lee\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsi3nloong%2Fsqlgen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsi3nloong%2Fsqlgen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsi3nloong%2Fsqlgen/lists"}