database/sql转gorm,geometry类型数据,怎么处理?

database/sql写法如下:

// 读取point等geometry类型数据 得到json字符串
row := db.QueryRow("SELECT ST_AsGeoJSON(`position`) FROM `spot` where id=12")

// json string to go struct
var geometry *geojson.Geometry
row.Scan(&geometry)
dump.P(geometry)

// 修改point的值
geometry.Point[0] = 119.123
geometry.Point[1] = 26.234

// go struct to json string
jsonStr, _ := sonic.MarshalString(geometry)
dump.P(jsonStr)

// 保存到数据库
db.Exec("update spot set `position`=ST_GeomFromGeoJson(?) where id=12", jsonStr)

想用gorm实现类似的效果,每次查询spot的时候position字段自动用ST_AsGeoJSON转换成JSON

文档里的《自定义数据类型》有看过,但它是直接查position字段然后进行处理,
我想的是查ST_AsGeoJSON(position) as position,也就是让MySQL自己处理成JSON

描述得有点乱,看得懂的帮忙解答一下。

阅读 1.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题