博客
关于我
Mybatis使用collection标签实现一对多关联查询,返回结果集list中嵌套list
阅读量:799 次
发布时间:2023-03-22

本文共 1403 字,大约阅读时间需要 4 分钟。

数据库查询优化方案

实体类结构

class PlatForm {
private String id;
private String code;
// 其他属性...
private List
targetUsers;
}

PlatForm 实体类中包含一个一对多关系的集合属性 targetUsers,表示一个平台可以关联多个目标用户。


查询方式对比

方式一:查询一次但分页不正确

1. SQL 查询

SELECT a.id, a.code, a.full_name, a.simple_name, a.depart, a.platform, a.intPOdlJCe, a.logo, a.value_explanation,
c.id as tid, c.target_code as targetCode, c.target_name as targetName
FROM rd_plat_form a
LEFT JOIN rd_plate_target b ON a.code = b.plate_code
LEFT JOIN rd_target_user c ON b.target_code = c.target_code
  • 优点:通过左连接关联多个表,返回一次完整的数据集。
  • 缺点:无法实现分页,因为一次性返回所有数据,不适合大数据量场景。

方式二:查询多次但分页正确

1. Mapper配置

  • 优点:支持分页,通过调用多方 mapper 的 selectList 方法分批次查询。
  • 缺点:需要额外配置多方映射文件。

多方映射配置

package com.xxx.modules.xxx.mapper;
@Mapper
public interface TatgetUserMapper {
@Select({
"SELECT a.id, a.plat_code platCode, a.plat_name platName FROM tatget_user AS a WHERE a.plat_Code = #{platCode} AND a.source = #{source}"
})
List
selectList(@Param("platCode") String platCode, @Param("source") String source);
}
  • variableNameplatCodesource 对应前面查询中的字段。
  • remarks:无需实现接口方法,直接使用 mapper 接口调用即可。

实际应用建议

  • 分页场景:使用方式二,通过多次查询实现分页,避免一次性加载大数据量。
  • 性能优化:在多方映射中使用缓存机制,减少数据库压力。
  • 开发注意事项:确保多方映射文件与实体类属性一致,避免字段映射错误。

总结

通过合理配置多方映射和分页接口,可以在保证数据完整性的同时,提升数据库查询性能。选择合适的查询方式取决于具体的业务需求和数据规模。

转载地址:http://kvqfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现Factorial digit sum阶乘数字和算法(附完整源码)
查看>>
Objective-C实现factorial iterative阶乘迭代算法(附完整源码)
查看>>
Objective-C实现FigurateNumber垛积数算法(附完整源码)
查看>>
Objective-C实现Gale-Shapley盖尔-沙普利算法(附完整源码)
查看>>
Objective-C实现hamiltonianCycle哈密尔顿图算法(附完整源码)
查看>>
Objective-C实现hamming numbers汉明数算法(附完整源码)
查看>>
Objective-C实现hanning 窗(附完整源码)
查看>>
Objective-C实现hanoiTower汉诺塔算法(附完整源码)
查看>>
Objective-C实现hardy ramanujana定理算法(附完整源码)
查看>>
Objective-C实现highest response ratio next高响应比优先调度算法(附完整源码)
查看>>
Objective-C实现hill climbing爬山法用来寻找函数的最大值算法(附完整源码)
查看>>
Objective-C实现hornerMethod霍纳法算法(附完整源码)
查看>>
Objective-C实现Http Post请求(附完整源码)
查看>>
Objective-C实现Http协议下载文件(附完整源码)
查看>>
Objective-C实现IIR 滤波器算法(附完整源码)
查看>>
Objective-C实现IIR数字滤波器(附完整源码)
查看>>
Objective-C实现insertion sort插入排序算法(附完整源码)
查看>>
Objective-C实现integer partition整数分区算法(附完整源码)
查看>>
Objective-C实现integerPartition整数划分算法(附完整源码)
查看>>
Objective-C实现interpolation search插值搜索算法(附完整源码)
查看>>