Java 多对多 表联合查询 中 根据 条件 查询指定内容

Java 多对多 表联合查询 中 根据 条件 查询指定内容

关于 多对多 表联合查询 中的 mapper 层的部署看一下链接
https://blog.csdn.net/YKenan/article/details/88910730

很神奇,用了三次 for 循环
下面的代码表示:

  1. 有一个类:Y
  2. 有另一个类:Kenan
  3. 一个 Y 可以含有多个 Kenan
  4. 一个 Kenan 可以含有多个 Y
  5. 这就需要建立另一个类:YKenan(多对多,建立外键等)
  6. 通过 Y 中含有 “Y” 的字符列,查出多个第一批数据,再通过 Y 外键连接到 YKenan 类,通过里一个外键连接到 Kenan 类,这样就得到了相应的第二批数据,而第一批数据中每个数据都包含多少个 Kenan 对象(也就是第二批数据中零个一个或者多个数据),再通过这个对象查出所需要的列
			List<Y> listSelectByKenan = yService.selectByInstructor("Y%");
			model.addAttribute("listSelectByKenan", listSelectByKenan);
			/*******************************************
			 * 多对多查询结果-start
			 *************************************************/
			List<List<String>> listYNameByKenan = new ArrayList<List<String>>();
			for (int i = 0; i < listSelectByKenan.size(); i++) {
				List<String> list_kenanName = new ArrayList<String>();
				List<YKenan> selectByYKenanMapByYName = yKenanService.selectByYKenanMapByYName(listSelectByKenan.get(i).getYName());
				for (YKenan yKenan : selectByYKenanMapByYName) {
					for (Kenan kenan : yKenan.getYKenanKenan()) {
						list_kenanName.add(kenan.getKenanName());
					}
				}
				listYNameByKenan.add(ist_kenanName);
			}
			model.addAttribute("listYNameByKenan", listYNameByKenan);
			/*******************************************
			 * 多对多查询结果-end
			 *************************************************/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis-Plus是一个基于MyBatis的增强工具,它提供了很多便捷的功能来简化开发。在MyBatis-Plus,多关联查询多对一可以通过使用@ManyToOne注解来实现。 首先,需要在实体类定义多对一的关系。假设我们有两个实体类:Order和User,一个订单对应一个用户。在Order实体类,我们可以使用@ManyToOne注解来定义多对一的关系: ```java public class Order { // 其他属性... @ManyToOne @JoinColumn(name = "user_id") private User user; // 其他方法... } ``` 在User实体类,我们可以使用@OneToMany注解来定义一对多的关系: ```java public class User { // 其他属性... @OneToMany(mappedBy = "user") private List<Order> orders; // 其他方法... } ``` 接下来,在查询订单时,可以使用MyBatis-Plus提供的Wrapper来进行多关联查询。例如,我们想要查询订单及其对应的用户信息,可以使用如下代码: ```java QueryWrapper<Order> wrapper = new QueryWrapper<>(); wrapper.select("order_id", "order_name", "user_id", "user_name") .leftJoin("user", "order.user_id = user.user_id") .eq("order_id", orderId); Order order = orderMapper.selectOne(wrapper); ``` 上述代码,我们使用leftJoin方法进行左连接查询,将订单和用户进行关联。通过select方法指定需要查询的字段,然后通过eq方法指定查询条件。最后,使用selectOne方法执行查询操作。 这样,就可以实现多关联查询多对一的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值