0
我正在实施数据库API。我有模特。我需要对每个模型实施CRUD操作。现在我为每个模型创建一个单独的GetAllModels
函数和Get
方法。我怎么能为所有模型做一次,如果需要的话只是传递一些变量?如何在Golang中为任何模型实现基本的CRUD动作?
下面我用每个模型的模式:
type City struct {
Attr1 string
Attr2 string
}
type Country struct {
Attr1 string
Attr2 string
}
func GetAllCities(db *sqlx.DB) ([]*City, error) {
items := []*City{}
err := db.Select(&items, "SELECT * FROM cities")
// check err
return items, nil
}
func (m *City) Get(db *sqlx.DB, id string) error {
if err := db.Get(m, "SELECT FROM cities WHERE id = ?", id); err != nil {
return err
}
return nil
}
func GetAllCountries(db *sqlx.DB) ([]*Country, error) {
items := []*Country{}
err := db.Select(&items, "SELECT * FROM countries")
// check err
return items, nil
}
func (m *Country) Get(db *sqlx.DB, id string) error {
if err := db.Get(m, "SELECT FROM countries WHERE id = ?", id); err != nil {
return err
}
return nil
}
但是从模型实际上变成模型是查询字符串和切片对象的类型。
如何为所有未来的模型制作一个通用的GetAll
函数和Get
方法?
我看到的问题是downvoted。有人可以解释为什么吗? – hsrv
我没有低调,但我想知道模特在这里的角色是什么。我可以看到它在面向对象的语言中用作抽象类,但我不认为它会像其他任何东西一样有用。模型究竟做了什么? –
@ChronoKitsune,也许我还不够清楚。我不想创建一个抽象类。我已经更新了问题中的代码示例,请仔细阅读。我有几个结构。并有非常相似的功能和方法从数据库中获取数据。每个这样的函数具有相同的结构,但是不同的*查询字符串*和不同的*类型*。所以我认为这些funcs不必是不同的funcs,它们可能是唯一一套CRUD funcs,但有不同的变量。但我坚持实施这个。 – hsrv