刚下班,我把下午那个文字描述用苍穹外卖稍微演示一下
然后我就用了一下
他的两个表
select c.name,d.name as dishName,d.price from category c left join dish d on c.id=d.category_id
执行出来是这样的

然后我用resultMap将这些压缩成一条嵌套集合的形式
即这种

然后看这个total,我这里用了PageHelper插件,然后查出来的是27条,但是如果我们以大集合为单位,实际上它是11条。
{
"code": 1,
"msg": null,
"data": {
"total": 27,
"records": [
{
"name": "人气套餐",
"dishVOS": []
},
{
"name": "传统主食",
"dishVOS": [
{
"dishName": "馒头",
"price": "1.00"
},
{
"dishName": "米饭",
"price": "2.00"
}
]
},
{
"name": "商务套餐",
"dishVOS": []
},
{
"name": "新鲜时蔬",
"dishVOS": [
{
"dishName": "炝炒圆白菜",
"price": "18.00"
},
{
"dishName": "清炒西兰花",
"price": "18.00"
},
{
"dishName": "蒜蓉娃娃菜",
"price": "18.00"
},
{
"dishName": "清炒小油菜",
"price": "18.00"
}
]
},
{
"name": "水煮鱼",
"dishVOS": [
{
"dishName": "蜀味水煮草鱼",
"price": "38.00"
},
{
"dishName": "经典酸菜鮰鱼",
"price": "66.00"
},
{
"dishName": "老坛酸菜鱼",
"price": "56.00"
}
]
},
{
"name": "汤类",
"dishVOS": [
{
"dishName": "平菇豆腐汤",
"price": "6.00"
},
{
"dishName": "鸡蛋汤",
"price": "4.00"
}
]
},
{
"name": "特色烤鱼",
"dishVOS": []
},
{
"name": "特色蒸菜",
"dishVOS": [
{
"dishName": "剁椒鱼头",
"price": "66.00"
},
{
"dishName": "梅菜扣肉",
"price": "58.00"
},
{
"dishName": "东坡肘子",
"price": "138.00"
},
{
"dishName": "清蒸鲈鱼",
"price": "98.00"
}
]
},
{
"name": "蜀味烤鱼",
"dishVOS": [
{
"dishName": "鮰鱼2斤",
"price": "72.00"
},
{
"dishName": "江团鱼2斤",
"price": "119.00"
},
{
"dishName": "草鱼2斤",
"price": "68.00"
}
]
},
{
"name": "蜀味牛蛙",
"dishVOS": [
{
"dishName": "馋嘴牛蛙",
"price": "88.00"
},
{
"dishName": "香锅牛蛙",
"price": "88.00"
},
{
"dishName": "金汤酸菜牛蛙",
"price": "88.00"
}
]
},
{
"name": "酒水饮料",
"dishVOS": [
{
"dishName": "雪花啤酒",
"price": "4.00"
},
{
"dishName": "北冰洋",
"price": "4.00"
},
{
"dishName": "王老吉",
"price": "6.00"
}
]
}
]
}
}
数一下上面的name,刚好11个。
然后我就用resultMap,修改了一下
代码如下

然后查出来的数据

total为11条。
但这样有个弊端,就是每个父集合我相当于都开了一个sqlSession去执行sql。

这样肯定慢。
那我问题来了,我在mybatis文档查询貌似只支持多字段

而不支持集合形式?
那这样我就无法在一个池子里面完成这些SQL查询。
所以我就想问一下resultMap面对这种问题无解吗?我一下午都在纠结这个问题。
ps:我是知道可以不用resultMap的,直接拿到Java里面,分开查询,然后组装数据,效率也很高。或者直接在java里面完成嵌套。但我就是好奇如果用resultMap怎么解决这个问题,算是杠一杠。不用更方便。但我就是想知道resultMap面对这种分页+嵌套集合的数据是否有更高效的方法。求解。
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
突然有点迷茫了,本科毕业4年,专业是计算机类,干过客服、干过技术支持,现在在干巡查性质的工作,下完班回来能抽个两三小时学习,目前学完了Java基础、面向对象、集合、异常、IO流、线程等内容,也完成了Mysql的语法学习、知道了索引、事务相关的内容。现在正在攻略学习路线里的SQL之母的自定义关卡(实战进阶),进度完成了2/3,到明天就能结束SQL部分的学习。我三年前找过王道培训班学的Java后端,但
5
问题描述我们评测一个功能是否正确,应该怎么写测试呢?特别是在AI时代,不人工review代码的情况 如何更好的使用测试来验收代码呢具体疑问平时都用AI写代码,随着需求增加,每次生成的代码都看不过来,只能借助AI生成测试来验收一下。但是测试也是AI生成的,我并不知道AI生成的测试是否符合我的需求,我也不太清楚,应该生成哪几种类型的测试才能更好的评估我们开发的功能。已有理解目前让AI写的有单元测试,集
4
想问一下大家,之前是在星球上充值了,然后俩年前没续费了,最近想学习所以在原来星球上续费了,发现没有人和项目提问和更新,才发现编程导航现在单独有一个网站,续费的会员不会同步吗
0
我想问一下大家简历的字体是多少号的呢,是2页还是3页
2
【入职求助贴】萌新刚入职某大厂做后端开发,目前还在试用期。最近遇到一个棘手的问题,想向大家求助一下。入职不久,leader 给我派了一个任务。跟我说是0.5天就可以解决,我刚毕业入职,做了一个星期没有做出来。实现一个收集定时成功任务的案例。听起来好像不复杂,但我自己摸索着做了一整个星期,到现在还没达到预期效果。这一周我基本是“边学边做”的状态,遇到卡点也会每天主动找 leader 沟通进度和疑问。
2
作者分享
