一、背景
本项目是一个公司内部平台,领导想让所有人都能用,从业务、产品、到开发、测试几乎是所有人,所以实体关系就比较复杂,关系反复修改关联,导致 sql 越写越复杂。
直到最近一次更改出现了下面问题。
二、问题
实体 A 关联了 实体 B ,而且展示的时候 A 需要关联展示 B 的很多属性,所以就直接在 A 中引用了一个 B 的对象。(事实上在上个版本已经这样设计了,前端也已经按这种方式渲染了)
class A {
....
B b;
}
产品领导又让临时增加以 B 的属性作为查询条件来查询 A。
三、解决方法
为了尽量少地让前端保持不动,或者是少动,我修改了sql:
select tb_a.*, tb_b.xxx as `b.xxx` from tb_a left join tb_b on tb_a.xx=tb_b.xx where ....
核心的是 tb_b.xxx as `b.xxx`, 直接将查询结果映射到了 A 实体中的 b 对象中。
记得刚工作那会写过类似的 sql 只是好久没这样写了,这里只是做个笔记,用的时候方便查看~
如果觉得还不错的话,关注、分享、在看, 原创不易,且看且珍惜~