mybatise多层集合嵌套查询(3层)
1,用一个sql,多个resultMap 一般另起一个子map,不直接在collection中再套
每个子项都需要id才可避免子项自身被覆盖,永远1条
例如:
<select id="getSingleItemProductListForNew"
parameterType="com.mcd.cn.rdc.pcm.product.business.vo.template.TemplateParam"
resultMap="singleProductVOResultOnline">
SELECT
p.id,
p.CODE,
p.NAME,
p.long\_name,
p.description,
p.type,
p.sales\_flag,
p.ui\_type,
p.dayweek,
p.bu,
p.has\_grill,
p.daypart,
p.channel,
ttr.CODE tax\_rate\_type\_code,
ttr.tax\_rate,
tsp.start\_date,
tsp.end\_date,
tsd.start\_time,
tsd.end\_time,
le.content AS productLongNameEn,
tpg.id AS grill\_id,
tpg.grill\_code,
tpg.NAME AS grill\_name,
tpg.grill\_mode,
tpg.display\_mode,
tpg.quantity,
tpg.max\_quantity,
tpg.min\_quantity,
tpg.grill\_image,
tpgi.id grill\_item\_id,
tpgi.grill\_item\_code,
tpgi.NAME item\_name,
tpgi.quantity item\_quantity,
tpgi.is\_modify,
tpgi.grill\_item\_image,
tpgi.is\_default,
ttr1.CODE grill\_tax\_rate\_type\_code,
ttr1.tax\_rate grill\_tax\_rate
FROM
t\_product p
LEFT JOIN t\_product\_sales\_period tsp ON p.CODE = tsp.product\_code
AND p.data\_version = tsp.data\_version
LEFT JOIN t\_product\_sales\_daypart tsd ON p.CODE = tsd.product\_code
AND p.data\_version = tsd.data\_version
LEFT JOIN t\_product\_grill tpg ON tpg.product\_code = p.CODE
AND tpg.data\_version = p.data\_version
LEFT JOIN t\_product\_grill\_item tpgi ON tpg.data\_version = tpgi.data\_version
AND tpg.product\_code = tpgi.product\_code
AND tpg.grill\_code = tpgi.grill\_code
LEFT JOIN t\_master\_tax\_rate ttr1 ON tpg.tax\_rate\_type\_code = ttr1.
CODE LEFT JOIN t\_master\_tax\_rate ttr ON p.tax\_rate\_type\_code = ttr.
CODE LEFT JOIN t\_international\_language le ON le.key\_code = p.CODE
AND le.LANGUAGE = 'en\_US'
AND le.field\_name = 'productLongNameEn'
AND le.table\_name = 't\_product'
AND le.data\_version = p.data\_version
WHERE
p.\`status\` = '1'
AND p.data\_version = \#\{dataVersion\}
<if test="productCodes != null and productCodes.size()>0">
AND p.code IN (
<foreach collection="productCodes" item="obj" index="index" separator=",">
\#\{obj\}
</foreach>
)
</if>
</select>
2,用多个sql,第一个是主sql,其他是map嵌套sql
参看:
https://www.jianshu.com/p/80711449476c
https://www.cnblogs.com/hnsunlong/p/7195594.html
自动2层?
https://blog.csdn.net/u011006672/article/details/85258757?utm\_medium=distribute.pc\_aggpage\_search\_result.none-task-blog-2~all~first\_rank\_v2~rank\_v25-10-85258757.nonecase&utm\_term=mybatis%20%E5%A4%9A%E5%B1%82%E5%B5%8C%E5%A5%97%E6%9F%A5%E8%AF%A2
SELECT
还没有评论,来说两句吧...