gorm 插入 slice 转换
时间: 2023-07-28 11:28:39 浏览: 157
在 GORM 中,如果你想要插入一个 slice 类型的数据,可以通过将 slice 转换为一个包含多个记录的数组来实现。
举个例子,假设我们有一个 `Student` 结构体,其中包含一个 `hobbies` 字段,它是一个字符串切片类型:
```go
type Student struct {
ID uint
Name string
Age int
Hobbies []string
}
```
现在,我们想要向数据库中插入一个 `Student` 记录,包含多个 `Hobbies`。我们可以使用 `gorm.Create()` 方法,并将 `Hobbies` 切片转换为多个 `Student` 记录,然后插入这些记录:
```go
hobbies := []string{"reading", "swimming", "running"}
students := make([]Student, len(hobbies))
for i, hobby := range hobbies {
students[i] = Student{Name: "John", Age: 20, Hobbies: []string{hobby}}
}
db.Create(&students)
```
在上面的示例中,我们首先定义了一个 `hobbies` 切片,然后创建一个包含多个 `Student` 记录的数组 `students`,其中每个记录都包含一个 `Hobbies` 字段。最后,我们使用 `gorm.Create()` 方法将这些记录插入到数据库中。
需要注意的是,如果你的 `Hobbies` 切片很大,这种方法可能会导致性能问题,因为它需要多次插入多个记录。在这种情况下,你可以考虑使用 GORM 的 `bulk_insert` 扩展,或使用其他数据库技术来提高性能。
阅读全文