@RequestMapping("/list") //分页查询数据 public String list(Integer p, Integer pageSize, Model model) { p = null == p ? 1 : p; //默认显示第一页 pageSize = null == pageSize ? 10 : pageSize; //默认每页显示10条 Page page = PageHelper.startPage(p, pageSize); List<Topic> topics = topicService.list(); topics.forEach(topic -> { LambdaQueryWrapper<TopicOption> topicOptionLambdaQueryWrapper = new LambdaQueryWrapper<>(); topicOptionLambdaQueryWrapper.eq(TopicOption::getTopicId, topic.getId()); List<TopicOption> topicOptions = topicOptionService.list(topicOptionLambdaQueryWrapper); List<String> stringList = topicOptions.stream().map( topicOption -> topicOption.getOptions()+"."+topicOption.getAnswer()).collect(Collectors.toList()); String[] ans2 = stringList.toArray(new String[stringList.size()]); topic.setTopicOptionStr(String.join(" ",ans2)); }); model.addAttribute("surveyList", topics); //绑定接受参数 model.addAttribute("cp", page.getPageNum()); //当前页 model.addAttribute("tp", page.getPages()); //总页数 model.addAttribute("total", page.getTotal()); //总条数 model.addAttribute("pageListURL", "survey/list"); //总条数 return "survey/surveyList"; } 请详细解释每一行代码
时间: 2023-06-25 07:05:33 浏览: 209
java中对list分页并显示数据到页面实例代码
5星 · 资源好评率100%
这段代码是一个 Spring MVC 的控制器方法,主要作用是分页查询数据并将查询结果传递给视图进行展示。
- 第1行:注解 @RequestMapping("/list") 表示该方法处理 "/list" 路径的请求。
- 第3-13行:利用 PageHelper 插件进行分页查询,p 表示当前页码,pageSize 表示每页显示的记录数,默认值分别为 1 和 10。Page 对象用于存储分页信息,包括当前页码、每页记录数、总记录数、总页数等。topicService.list() 方法用于查询所有主题对象,将查询结果保存在 topics 集合中。通过 LambdaQueryWrapper 对 TopicOption 表进行条件查询,查询与当前主题 id 相关的选项。将选项对象封装在 topicOptions 集合中,然后使用 Stream API 将选项和答案拼接成字符串,并将字符串设置到对应主题的 topicOptionStr 属性中。
- 第15-18行:将查询结果绑定到 Model 对象中,方便在视图中使用。surveyList 属性存储查询结果,cp 属性存储当前页码,tp 属性存储总页数,total 属性存储总记录数。pageListURL 属性表示分页导航栏的 URL 地址,这里设置为 "/survey/list"。
- 第19行:返回视图名 "survey/surveyList",用于告诉 Spring MVC 框架要渲染哪个视图。
阅读全文