一条sql查询多张不同的表

场景说明:

有A、B、C、D、E共5张表,其中A表为主表,BCDE同为子表,A表有一个字段关联着BCDE表的主键id,BCDE表的字段除了主键id都不相同,此时我们需要查询A表数据同时关联子表查询出其子表的所有字段信息,因为不清楚关联子表具体是谁,所以您可能需要如下骚操作

Mybatis查询语句

<select id="selectInfo" parameterType="yxz.niit.com.Yxz" statementType="STATEMENT"  resultType="java.util.HashMap">
SELECT A.id,A.name,O.* FROM A A
LEFT JOIN ${tableName} O ON A.o_id=O.id
WHERE A.used_flag=1 AND A.id=${id}
</select>

1.yxz.niit.com.Yxz是查询参数实体路径

2.statementType=”STATEMENT”

要实现动态传入表名、列名,需要做如下修改
添加属性statementType=”STATEMENT”
同时sql里的属有变量取值都改成${xxxx},而不是#{xxx}

3.resultType=”java.util.HashMap”

不知道具体返回是哪个实体,所以先返回一个Map,然后后台代码在转出Object对象

4.${tableName} 接受表名 B、C、D、E

Map转Object

JSONHelper.jsonToBean(JSONHelper.beanToJson(object),B.class)

这样就可以转换出B对象


-------------本文结束感谢您的阅读-------------
0%