使用 GORM Go 保留自定义集数据类型
提供的代码定义了自定义集数据类型 threadUnsafeSet 及其随附方法。要使用 MySQL 的 GORM 库保留此数据类型,需要实现扫描器和驱动程序值器接口。
扫描器和驱动器值器接口实现
Scanner接口用于将数据库值扫描为Go值,而Driver Valuer接口用于将Go值转换为数据库驱动值。对于 threadUnsafeSet 类型,这意味着实现将自定义集转换为数据库兼容格式的方法,反之亦然。
示例实现可能如下所示:
func (data *threadUnsafeSet) Value() (driver.Value, error) { return data.ConvertJSONToString(), nil } func (data *threadUnsafeSet) Scan(value interface{}) error { *data = data.ConvertStringToJson(valueString) }
在此示例中、 ConvertJSONToString 和 ConvertStringToJson 方法将自定义集与 JSON 字符串相互转换,然后可以将其存储在数据库中。
通过实现这些接口,GORM 现在可以了解如何从数据库存储和检索 threadUnsafeSet 类型。
注意: 您应该将虚拟 ConvertJSONToString 和 ConvertStringToJson 方法调用替换为与您的特定数据匹配的实际实现类型转换要求。
以上是如何使用 GORM 和 MySQL 保存自定义 Go Set 数据类型?的详细内容。更多信息请关注PHP中文网其他相关文章!