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
,
描述得有点乱,看得懂的帮忙解答一下。