有没有可能分析 sql 语法来进行 1 对 n 返回结果结构化之类的呢?

2019-09-27 14:44:43 +08:00
 gz911122

现在 mybatis 也好 jpa 也罢这些 orm/mapping 框架都需要手动指定比如 1 对 n 的时候的映射关系来将 sql 返回的矩阵变成结构化的数据

{
 "a":[
   1,2
  ]
}

比如这样的结构 sql 查询的结果实际上是 a,1 a,2

有办法通过比如 ast 语法树分析之类的来代替原来手动指定么?

3931 次点击
所在节点    MySQL
6 条回复
a1369521908
2019-09-27 15:27:55 +08:00
YUyu101
2019-09-27 15:39:08 +08:00
用函数转成 json 或者 array 塞到子查询里吧,不然还会碰到你想查用户的发帖列表和回复列表这种,一对几个多的情况,用表格无法表示结果,只能塞到一个字段里去,而且还不用 orm 映射了。否则就分两次查询。
YUyu101
2019-09-27 15:43:59 +08:00
select a.*,(select json_agg(b.*) from b where aid=a.id) as b from a
查出来就是 a , b:[b1,b2]
gowk
2019-09-27 15:46:26 +08:00
来了,来了,那个男人就要来了
reus
2019-09-27 15:47:01 +08:00
PostgreSQL 可以直接写在 sql 里,想要什么结构自己写

jsonb_agg, jsonb_build_object 等等,都可以构造嵌套数据
gz911122
2019-09-27 16:43:05 +08:00
@reus
@YUyu101

是的,
我的意思是解决 orm 需要手动指定 1toN 关联关系这个问题...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/604816

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX