首頁  >  文章  >  後端開發  >  如何使用sqlx高效掃描嵌套結構?

如何使用sqlx高效掃描嵌套結構?

DDD
DDD原創
2024-11-23 08:55:11445瀏覽

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