go - 嵌套的一对多关系可以自动转换为嵌套结构吗
问题描述
问题
我整天都在想,我只是在任何论坛上都找不到解决这个问题的优雅方法。我有两个模型,它们之间存在一对多的关系。我可以使用sqlx
包将 sql 行映射到主结构和嵌套结构吗?
假设我们有以下不起作用的示例:
type Author struct {
Id int
Name string
Books []Book
}
type Book struct {
Id int
Name string
AuthorId int
}
func GetAuthorsWithBooks() []Author {
var authors []Author
query := `
SELECT * FROM authors INNER JOIN books ON books.id = authors.id
`
err := config.ApplicationConfig.DB.Select(&authors, query)
return authors
}
如何在没有太多样板代码的情况下获得以下结果:
[
{
"id": 1,
"name": "Lorem ipsum",
"books": {
"id": 1,
"name": "Some book"
}
}
]
目前我的解决方案包括 2 个查询。一个用于书籍,一个用于作者,然后在 for 循环的帮助下将它们合并在一起。它可以工作,但由于性能原因(2 个查询而不是一个带有 JOIN 的查询),它很糟糕,而且容易出错。
我不想使用像 GORM 之类的 ORM,因为对于这样一个简单的应用程序来说,这将是矫枉过正。
解决方案
推荐阅读
- javascript - 点击时复制输入
- php - 如何在这个数组中打印出“id”?
- c - 如何正确地将元素打印到文件中?
- c# - 如何将放置在拆分按钮内容内的标签文本与选定的列表框项目绑定?
- java - 无法初始化类 io.jsonwebtoken.SignatureAlgorithm,java.lang.NoClassDefFoundError,
- excel - 如何使用 Excel 中的另一个按钮调用另一个工作表中的按钮?
- python - 标记重复行并为重复行添加范围号,Python 3.6
- composer-php - Composer:为什么我的一些包在安装新包时被自动删除
- amazon-s3 - EMR 上的蜂巢 | 映射器数量 | Hive 指向 S3 位置
- scala - 如何为 map、struct、array 等复杂数据类型编写 spark scala 模式