@RequestMapping("/list") //分页查询数据 public String list(String keyword, Integer p, Integer pageSize, Model model) { p = null == p ? 1 : p; //默认显示第一页 pageSize = null == pageSize ? 10 : pageSize; //默认每页显示10条 Page page = PageHelper.startPage(p, pageSize); List<Dormitory> dormitoryList = dormitoryService.list(); dormitoryList.forEach(dormitory -> { LambdaQueryWrapper<Student> studentLambdaQueryWrapper = new LambdaQueryWrapper<>(); studentLambdaQueryWrapper.eq(Student::getDormitoryId,dormitory.getId()); List<Student> students = studentService.list(studentLambdaQueryWrapper); List<String> stringList = students.stream().map(Student::getName).collect(Collectors.toList()); String[] ans2 = stringList.toArray(new String[stringList.size()]); dormitory.setDormUser(String.join(",",ans2)); }); model.addAttribute("dorminfoList", dormitoryList); //绑定接受参数 model.addAttribute("cp", page.getPageNum()); //当前页 model.addAttribute("tp", page.getPages()); //总页数 model.addAttribute("total", page.getTotal()); //总条数 model.addAttribute("pageListURL", "dorminfo/list"); //总条数 return "dorminfo/dorminfoList"; }请详细解释每一行代码
时间: 2023-06-26 16:06:28 浏览: 111
这段代码是一个基于Spring框架的Java web应用程序中的一个Controller类中的一个方法,用于实现分页查询数据的功能。下面是每一行代码的详细解释:
```java
@RequestMapping("/list") //分页查询数据
public String list(String keyword, Integer p, Integer pageSize, Model model) {
```
该方法使用@RequestMapping注解,映射了"/list"路径,当用户访问该路径时就会调用该方法。该方法有四个参数:keyword表示查询关键字,p表示当前页码,pageSize表示每页显示的记录数,model表示用于传递数据到前端页面的Model对象。
```java
p = null == p ? 1 : p; //默认显示第一页
pageSize = null == pageSize ? 10 : pageSize; //默认每页显示10条
Page page = PageHelper.startPage(p, pageSize);
```
这段代码主要是设置分页相关的参数。如果没有传入p和pageSize,则设置默认值分别为1和10。然后使用PageHelper.startPage方法开始分页,并将p和pageSize传入,该方法返回一个Page对象。
```java
List<Dormitory> dormitoryList = dormitoryService.list();
```
这行代码从数据库中查询所有宿舍信息,将结果保存在dormitoryList变量中。
```java
dormitoryList.forEach(dormitory -> {
LambdaQueryWrapper<Student> studentLambdaQueryWrapper = new LambdaQueryWrapper<>();
studentLambdaQueryWrapper.eq(Student::getDormitoryId,dormitory.getId());
List<Student> students = studentService.list(studentLambdaQueryWrapper);
List<String> stringList = students.stream().map(Student::getName).collect(Collectors.toList());
String[] ans2 = stringList.toArray(new String[stringList.size()]);
dormitory.setDormUser(String.join(",",ans2));
});
```
这段代码是对dormitoryList中每个宿舍对象进行遍历。对于每个宿舍,先通过LambdaQueryWrapper创建一个查询条件,查询该宿舍下的所有学生,并将学生姓名存入一个List中。然后将该List转化为一个String数组,使用String.join方法将数组中的元素用逗号连接起来,最后将连接好的字符串设置为宿舍对象的dormUser属性。
```java
model.addAttribute("dorminfoList", dormitoryList); //绑定接受参数
model.addAttribute("cp", page.getPageNum()); //当前页
model.addAttribute("tp", page.getPages()); //总页数
model.addAttribute("total", page.getTotal()); //总条数
model.addAttribute("pageListURL", "dorminfo/list"); //总条数
return "dorminfo/dorminfoList";
```
最后将处理好的数据添加到Model中,用于传递到前端页面展示。其中,dorminfoList表示查询到的宿舍信息,cp表示当前页码,tp表示总页数,total表示总记录数,pageListURL表示分页的URL地址,最后返回一个字符串"dorminfo/dorminfoList",表示使用名为"dorminfoList"的模板渲染页面。
阅读全文