双表查询java代码_不使用left-join等多表关联查询,只用单表查询和Java程序,简便实现“多表查询”效果...

本文介绍了如何在Java应用中避免复杂的left-join查询,通过自定义MergeUtil工具,将两个集合的数据关联合并成一个,简化了查询流程。重点讲解了合并Map的几种方法和适用场景,适用于提高开发效率和数据库性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上次我们提到,不使用left-loin关联查询,可能是为了提高效率或者配置缓存,也可以简化一下sql语句的编写。只写单表查询,sql真得太简单了。问题是,查询多个表的数据还是非常需要的。   因此,存在这么一个强烈的需求:查询2个集合,怎么合并2个集合中的数据为1个集合,且数据关联要正确。在实践中,我提炼了如下流程和工具方法: 流程   先查询第1个集合,根据第1个集合的结果,查询第2个集合,合并2个集合  public PageVo listPage(PageVo form) {  List> list = transferDao.listPage(form);  if (list != null && list.size()>0) {   List> loanList = loanInfoService.batchList(list);   MergeUtilmerge(list, loanList);   form.setList(list);  }  return form; }  合并集合的工具方法 /** * 合并关联数据集合到主表集合中,把2个集合中的数据合并到一个集合中,通过某个key关联,从而替代数据库的left-join等关联查询。 *  * 方法分3类:合并2个元素为Map的集合、合并2个Map、查找1个Map在另外一个元素为集合的关联Map。 *  * 可选参数:2个map的关联key可能是1个,也可能是2个;合并2个Map时,可以为关联Map的key分别加上前缀prefix,防止重名,也可以不加上。 *  * 不适用场景:多表查询搜索且查询条件在关联表中且需要分页的时候,只使用单表查询+Merge工具,是不够的。 * @author fansunion@qq.com 2014年11月26日 */ public class MergeUtil { // ///////////////////////合并2个集合中的所有Map/////////////////////

/**  * 合并关联数据集合到主表结合中,把2个集合中的数据合并到一个集合中,通过某个主键关联(不用数据库left join)  */ // 合并2个集合,先查找关联map,再合并2个单独的map,2个map中的关联key是同一个 public static void merge(List> mainList,   List> relationList, String relationKey,   String prefix) ;

// 合并2个集合,先查找关联map,再合并2个单独的map,合并map的key加上前缀,2个map中的关联key是2个 public static void merge(List> mainList,   String mainKey, List> relationList,   String relationKey, String prefix) ;

// 合并2个集合,先查找关联map,再合并2个单独的map,2个map中的关联key是同1个 public static void merge(List> mainList,   List> relationList, String relationKey) ;

// 合并2个集合,2个集合中的map通过key关联 public static void merge(List> mainList,   String mainKey, List> relationList,   String relationKey) ;

// ////////////合并2个Map,前缀prefix可要可不要,不要的情况下,key重名时,会覆盖/////////////////////

// 合并2个map,relation中的会放到main总,key都加上prefix public static void merge(Map mainMap,   Map relation, String prefix) ;

// 合并2个map,如果存在重复,relationMap会覆盖main中的 public static void merge(Map mainMap,   Map relationMap) ;

// ///////////////////////寻找一个Map在一个集合中的关联Map///////////////////// /**  * 从一个集合中找到目标对象,如果没有找到,返回null  *   * @param 2个map共同的key  */ public static Map relationMap(Map mainMap,   List> list, String relationKey) ;

// 找到1个map在集合list中需要关联的对象,分别指定各自的key public static Map relationMap(Map mainMap,   String mainKey, List> list, String relationKey) ; 工具方法的源码就不提供了,JavaWeb开发的流程和基础库还在持续积累中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值