如何将数据结构体与Golang中的数据库创建沿着标记/标志绑定。
例如,我有这样的代码:
type User struct {
ID int `sql:"primary_key;AUTO_INCREMENT"`
Name string `sql:"type:varchar(100);unique"`
Email string `sql:"type:varchar(100);unique"`
Address string `sql:"type:varchar(100)"`
}
当创建基于此结构的数据库时,我手动创建它,如下所示:
func (db *DB) CreateUserTable() (sql.Result, error) {
statement := "CREATE TABLE IF NOT EXISTS %s (%s int, %s varchar, %s varchar, %s varchar)"
return db.Exec(
fmt.Sprintf(statement,
"user",
"id",
"name",
"email",
"address",
),
)
}
如何在创建数据库时绑定结构体及其标记(主键、NULL等)?是否有不使用ORM库(gorm等)的最佳实践?
2条答案
按热度按时间mec1mxoz1#
您可以使用reflect来检查结构体并使用它来构造数据库查询。
例如:
如果你想读取struct的名字作为表名:
如果你想读取struct的属性,循环并使用以下命令读取它:
注意struct的标签是在反勾号-> `里面的
这就是您需要从结构中获得的全部内容。您应该在文档中探索更多内容。
jdgnovmf2#
我做的这个项目:https://github.com/sunary/sqlize