我试图找到使用多个数据库表所代表的对象的最佳方法。
对于数据库访问,我用自己的类型包装了sqlx,然后定义了一些方法:
type DB struct {
*sqlx.DB
}
func (db *DB) GetSomething(id uint32) *Something {}
func (db *DB) AddSomething(*Something) {}
对于使用单个数据库表进行一对一映射的对象,它非常有用。我看到了几种使用多表对象的方法:
我更喜欢2号,但需要有关如何在Go中设计它的帮助。
答案 0 :(得分:0)
如果只是为了减少每次需要User
的代码重复,请将其放在处理用户的地方。如果您愿意,可以UserService
,createUser
和isUserNameAvailable
。有些人会更进一步,为数据检索和持久性(DAO层)创建单独的层,对我来说,这有点过于样板。
有时您会发现您可能根本不需要单独的方法。您从数据库中提取复杂的报告,但唯一需要的是通过单个休息端点返回。用户名和密码哈希需要用户的唯一时间是在登录期间 - 只需使用它来取消登录(用户名,密码)方法。在这些情况下,只需在您的业务方法中直接致电sqlx
。