V2EX POST
651 subscribers
138 photos
31 videos
99 files
104K links
v2ex新贴定时推送,可按需置顶本频道然后关闭通知
Download Telegram
一直找不到一个好的 sqlgen 生成工具,参考 sqlc,goctl 撸了一个

一直找不到一个好的 sqlgen 生成工具,参考 sqlc,goctl 写了一个工具,支持 `bun`, `gorm`, `sql`, `sqlx`, `xorm` 生成,使用还是比较简单,开发者只需要写一个 sql 文件即可通过 sqlgen 生成代码。

支持从 sql 文件和 dsn 两种数据来源

链接: https://github.com/anqiansong/sqlgen

#sqlgen #sql #生成 #文件 #工具 #sqlc #goctl #bun #gorm #sqlx
请教一个关于 sqlc 的问题, 当我修改 query 之后造成 go 结构体字段的变化. 如何自定义?

表 1 有两个字段挪到 表 2 上了.
之前的 query.sql 是这样的:
```sql
select * from t1
```
sqlc 生成的结构体是这样的:
```go
type Haha struct {
...
Username string `json:"username"`
Password string `json:"password"`
...
}
```

现在的 query.sql 长这样:
```sql
select t1.*, t2.*
from t1
left join t2
on t1.id=t2.pid
```

生成的结构体变这样了:
```go
type Haha struct {
Username sql.NullString `json:"username"`
Password sql.NullString `json:"password"`
}
```

sql.NullString 这是个结构体, 导致我所有的业务代码都要改.
请问有没有什么办法能让他变回 string?

t2 join t1 这种方法不行. 因为我还有一些其他字段依赖 t1 相当于没解决问题.

sqlc 是否有针对这种情况进行考虑? config 中的 rename 感觉是全局修改, 自定义性不强.




第二个问题是各位大佬在使用 sqlc 的过程中, 针对表结构和 query.sql 的修改是如何设计的?


谢谢

#sql #t1 #json #t2 #query #sqlc #string #NullString #select #go