MySQL连表查询时一条数据对应多条数据

本文探讨了MySQL中如何处理一条数据对应多条数据的情况,特别是连表查询的应用。通过实例解析了如何使用连表查询来获取复杂的数据关系,详细介绍了在实体类和响应数据处理中的关键步骤,并提供了实用的工具类GroupingUtil作为辅助操作。

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

select a.* 
from user a
left join school b on a.id=b.userId
一个用户对应多个学校查出多条数据,把用户提出来,多个学校变成数组查询出来:
				例:用户:
								用户名:,
								用户id:,
								用户密码:,
								schoolChild:{
											学校名:	,
											学校地点:
										 },
										 {
											学校名:	,
											学校地点:
										 },
										 {
											学校名:	,
											学校地点:
										 }

实体类:response:

	private String userName,
	private Integer userId,
	private String userPassword,
	private String schoolName,
	private String schooleAdress,
	private List<School> schoolChild,

工具类:GroupingUtil:

public statics List<response> grouping(List<response> list){
	List<Integer> ids=new ArrayList<>();
	List<response> responses=new ArrayList<>();
	for(response dto1:list){
		if(ids.contains(dto1.getId())){
			continue;
		}
		ids.add(dto1.getId())
		for(response dto2:list){
			List<School> schoolList=new ArrayList<>();
			if(dto1.getId()==dto2.getId()){
				School school=new School();   //实体类写在里面,写在外面数组会重复
				school.setSchoolName(dto2.getSchoolName);
				school.setSchoolAdress(dto2.getSchoolAdress);
				schoolList.add(school);
			}
			dto1.setSchoolChild(schoolList);
		}
		responses.add(dto1);
	}
	return responses;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值