文章详情页
java - Mybatis关联查询
浏览:326日期:2023-11-14 11:19:04
问题描述
实际开发中,Mybatis一对多、多对多关联查询是用reultMap引用,javaType引用还是select引用,性能哪个比较好?用select懒加载,会提高查询速度和性能?
问题解答
回答1:mybatis对于处理一对多的情况有三种解决方案:
查询的时候join子表,然后交由mybatis拼装
查询的时候不join子表,另外发起select去抓取子表数据
和第二种类似,只不过利用fetchType=lazy来延缓抓取的时机
这三种方案各有问题:
第一种方案有两个缺陷:1) 做分页查询的时候不准,2) 如果关联子表多,笛卡尔积会非常大
第二种方案会出现1+N次查询,发起的sql数量会非常恐怖
第三种方案看似提升了第一次查询的效率,但是如果在循环里get lazy property,那么和第二种方案没有什么区别
因此如果对性能上有要求, 需要由我们自己去拼装一对多的集合,处理的办法是:把主表的ID都收集起来, 发起一次性查询把所有子表的数据抓取出来,然后人工拼装。这样发起的查询数量就是1+1。
标签:
java
相关文章:
1. javascript - 怎么实现点击按钮后,在新的标签页播放视频?2. python - celery beat 调度如何运行期间动态添加任务?3. MYSQL 运算的问题4. html5 - H5 audio 微信端 在IOS上不能播放音乐5. 请问老师,我导入模板后按视频讲解操作,css跟js还是下载不出来,这个问题能怎么解决?6. 在应用配置文件 app.php 中找不到’route_check_cache’配置项7. javascript - JS用ajax爬取百度外卖店家信息8. mongodb可以导出数据到excel吗?9. javascript - 百度地图一开始设置了中心点,怎么通过按钮在调转到对应的中心点????10. android - ionic应用打包部署了,但是连接不上服务器,就连写一个a标签链接到百度都不可以
排行榜

网公网安备