使用 sqlx 扫描嵌套结构
使用 sqlx 时,嵌套结构提出了挑战。不过,文档通过使用嵌入式结构提供了一种解决方案。
嵌入式结构
Sqlx 支持嵌入式结构,允许您使用 Go 的优先级规则为字段赋值用于嵌入属性和方法。
代码示例
考虑以下代码,其中 Address 不是嵌入结构:
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address Address `json:"adress"` } type Address struct { Street string `json:"street" db:"street"` City string `json:"city" db:"city"` }
尝试扫描 Customer 结构时此代码将导致错误,因为 Address 字段未嵌入且没有自己的 db 标记。
要解决此问题,请嵌入 Address进入客户:
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address }
通过嵌入Address,其字段(包括标签)被提升为Customer,允许sqlx从查询结果中填充它们。
JSON输出
嵌入地址将展平 JSON 输出,如下所示:
{ "id": 1, "name": "foo", "street": "bar", "city": "baz" }
要解决这个问题,您可以将数据库结构重新映射到原始类型或将查询结果扫描到映射中。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3