Java SpringBoot QueryWapper List Map 实现多表/嵌套查询

一、准备工作

①准备数据库

客户表

用户表

 ②配置springboot框架文件,不多讲述

 

 二、关键代码

在controller中自定义一个查询方法,将以下代码写进去,该为自己需要的代码字段

//创建一个客户的wapper
QueryWrapper<Customers> customersQueryWrapper=new QueryWrapper<>();
//执行sql语句
customersQueryWrapper.exists("SELECT * FROM `customers`");
//转换为集合
List<Customers> customersList=customersService.list(customersQueryWrapper);

System.out.println("=======商家列表=======");

//循环输出客户表的信息
for (Customers customers : customersList) {

    System.out.println(customers);
}


//创建一个用户的wapper
QueryWrapper<Users> usersQueryWrapper=new QueryWrapper<>();

//执行sql语句
 usersQueryWrapper.exists("SELECT * FROM `users` ");

//转换为集合
List<Users> usersList=usersService.list(usersQueryWrapper);

System.out.println("=======用户列表=======");

//循环输出用户表的信息
for (Users users : usersList) {
    System.out.println(users);
}


//定义结果集合,用来存储map键值对集合
List<Map>resList=new ArrayList<>();

//循环主表的对象集合,我这里是客户表为主表
for (int i=0;i<customersList.size();i++){

    //判断外键是否相同,相同在添加到map中
    if(customersList.get(i).getUserid().equals(usersList.get(i).getId())){

        //创建map集合,存储数据库的键值对
        Map<String,String> map=new HashMap<>();

        //向map集合中追加键值对
        //键就是客户表数据库的名字(也可自定义,建议不要,防止混淆)
        //值就是循环的集合元素.get到的
        map.put("id",customersList.get(i).getId().toString());
        map.put("name",customersList.get(i).getName());
        map.put("address",customersList.get(i).getAddress());
        map.put("sLatitude",customersList.get(i).getSlatitude());
        map.put("eLatitude",customersList.get(i).getElatitude());
        map.put("joinTime",customersList.get(i).getJointime().toString());
        map.put("userId",customersList.get(i).getUserid().toString());
        //已经判断外键相同,所以这里直接存储外键对象的名字,如果你的不是名字可以更改
        map.put("userName",usersList.get(i).getName());
        map.put("status",customersList.get(i).getStatus().toString());

        //将map键值对存储到结果集合中
        resList.add(map);
    }
}

System.out.println("=======结果列表=======");

//循环输出结果表的信息
for (Map map : resList) {
    System.out.println(map);
}

三、运行结果如下

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot实现多表查询可以通过使用JPA的关联查询来实现。下面是一个示例: 假设我们有两个实体类User和Organization,User类中有一个organizationId字段,表示用户所属的组织机构ID。我们想要查询UserVo类,其中包含了User类的信息和对应的Organization的name信息。 首先,定义User和Organization的实体类: ```java @Entity @Table(name = "user") public class User { @Id private Long id; private String name; private Long organizationId; // 省略其他字段和方法 } @Entity @Table(name = "organization") public class Organization { @Id private Long id; private String name; // 省略其他字段和方法 } ``` 然后,定义UserVo类,包含了User类的信息和对应的Organization的name信息: ```java public class UserVo { private Long id; private String name; private String organizationName; // 省略其他字段和方法 } ``` 接下来,在UserController中进行多表查询: ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserRepository userRepository; @Autowired private OrganizationRepository organizationRepository; @GetMapping("/list") public List<UserVo> voList() { List<User> userList = userRepository.findAll(); List<UserVo> userVoList = new ArrayList<>(); for (User user : userList) { UserVo userVo = new UserVo(); userVo.setId(user.getId()); userVo.setName(user.getName()); Organization organization = organizationRepository.findById(user.getOrganizationId()).orElse(null); if (organization != null) { userVo.setOrganizationName(organization.getName()); } userVoList.add(userVo); } return userVoList; } } ``` 在上述代码中,我们使用了userRepository和organizationRepository来分别查询User和Organization的数据。然后,通过遍历User列表,根据每个User的organizationId查询对应的Organization的name信息,并将结果封装到UserVo对象中,最后返回UserVo列表。 这样,当访问"/user/list"接口时,就可以获取到包含了User类的信息和对应的Organization的name信息的UserVo列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假客套

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值