1
jamesxu 2019-04-21 12:15:37 +08:00 via iPhone 1
联表查啊
|
2
reus 2019-04-21 13:31:27 +08:00 2
本来用 JOIN 无比简单的事情,套了个 ORM 就各种不顺
那你还用 ORM 干嘛? |
3
shihaoyu 2019-04-21 14:44:08 +08:00
不知道楼主的 ORM 是什么框架的下的,Django 的 ORM 有一个 select_related 方法解决一对多的 1+N 查询,prefetch_related 方法解决多对多的 1+N 问题。实际上翻译成 sql 语句后也是使用 join,我想 Java 里面的框架应该也有类似的解决方案。希望能帮到楼主。
|
5
ydc886 OP @reus 哈哈,这类操作就是很基础的东西,怎么写都行。这类 name 或者 sex 之类没什么业务逻辑的字段,取出来也就塞在 VO 中一个新的域,某个领域对象是业务核心对象,那么其查询时关联一些数据要挺多,这出现的是 join 多了,sql 变长了。就在找个折衷点。标题也不是很恰当。JPA 的 EntityGraph,Spring JPA 的 projections,这些我理解也是对这种场景的抽象。
|
6
ydc886 OP 再者,这东西稍微再扩展一下。几张表不在一个同一个 schema,又怎么玩。这些东西日常刷刷写,也想提炼一下,但是没想到如何描述,在搜索引擎就困难找到相关的 blog,就希望作为一个问题,看大家给一些 keyword,让我按图索骥。
|
7
TommyLemon 2019-04-21 17:50:44 +08:00
APIJSON,自动化接口和文档 ORM 库,
支持 LEFT JOIN, RIGHT JOIN, INNER JOIN, OUTTER JOIN, FULL JOIN, APP JOIN。 前端只要传一个 join 键值对,例如 "join":"</User/id@" , 后端就自动生成了 JOIN 的 SQL 语句,如果用的是 APP JOIN 例如 "join":"@/User/id@" ,则会自动实现第 2 中方式, 从主表去除所有关联字段的值 refKey,组成数组 refKeys, 然后对副表生成 id IN($refKeys) 自动优化性能。 注意,后端没有写任何一行代码,以上过程就自动完成了! 🏆码云最有价值开源项目 🚀后端接口和文档自动化,前端(客户端) 定制返回 JSON 的数据和结构! GitHub 右上角点 Star 支持下吧 ^_^ https://github.com/TommyLemon/APIJSON |
8
icaca 2019-04-21 19:39:36 +08:00
写个视图吧 用 orm 框架查询视图 还能解决排序的问题
|
9
TommyLemon 2019-04-22 12:07:17 +08:00
@icaca 视图是要开发和维护成本的,看 #7 回答,很好的方案
|