首页  >  文章  >  后端开发  >  如何使用sqlx高效扫描嵌套结构?

如何使用sqlx高效扫描嵌套结构?

DDD
DDD原创
2024-11-23 08:55:11469浏览

How Can I Efficiently Scan Nested Structs with sqlx?

使用 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 标签。

要解决此问题,请将地址嵌入到Customer:

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"
}

要解决此问题,您可以将数据库结构重新映射到原始类型或将查询结果扫描到映射中。

以上是如何使用sqlx高效扫描嵌套结构?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn