学习笔记:基于SpringBoot的牛客网社区项目实现(四)之社区主页实现

一、创建主页实体类与数据库中对应,新建帖子Mapper接口

@Mapper
public interface DiscussPostMapper {

    List selectDiscussPosts(int userId, int offset, int limit);

    // @Param注解用于给参数取别名,
    // 如果只有一个参数,并且在里使用,则必须加别名.
    int selectDiscussPostRows(@Param("userId") int userId);

}

userId为了以后选择个人主页发布的帖子,offset每页起始行的行号,limit每页显示多少条数据

业务层的方法写在Service层,加@Service注解。

@Service
public class DiscussPostService {

    @Autowired
    private DiscussPostMapper discussPostMapper;

    public List findDiscussPosts(int userId, int offset, int limit) {
        return discussPostMapper.selectDiscussPosts(userId, offset, limit);
    }

    public int findDiscussPostRows(int userId) {
        return discussPostMapper.selectDiscussPostRows(userId);
    }

}

在Controller层写对浏览器的操作,接收数据以及返回数据

@RequestMapping(path = "/index", method = RequestMethod.GET)
public String getIndexPage(Model model, Page page) {
    // 方法调用钱,SpringMVC会自动实例化Model和Page,并将Page注入Model.
    // 所以,在thymeleaf中可以直接访问Page对象中的数据.
    page.setRows(discussPostService.findDiscussPostRows(0));
    page.setPath("/index");

    List list = discussPostService.findDiscussPosts(0, page.getOffset(), page.getLimit());
    List> discussPosts = new ArrayList<>();
    if (list != null) {
        for (DiscussPost post : list) {
            Map map = new HashMap<>();
            map.put("post", post);
            User user = userService.findUserById(post.getUserId());
            map.put("user", user);
            discussPosts.add(map);
        }
    }
    model.addAttribute("discussPosts", discussPosts);//前端可以从model中取数据
    return "/index";
}

你可能感兴趣的:(学习,spring,boot,java)