目录
1.开发社区首页
①首先根据每张表创建相对应的实体类(entity层里的实体类),新建了DiscussPost和User两个实体类,该实体类中的属性与表中的字段名相同;
②由于每张表都需要一些增删改查的方法,因此需要创建Mapper接口(每张表各一个,在dao里创建实体类xxxMapper),接口中放有对应表的增删改查方法。(数据访问层,discussPostMapper里定义了两个方法1.返回查到的帖子2.返回帖子的行数)
③由于是接口,只提供了方法名,本身没有具体方法的实现。因此创建对应的XxxMapper.xml文件,在该xml文件中编写相应Mapper接口方法的SQL语句。
④直接去调用Mapper接口中的方法,不方便进行管理。因此为每个Mapper接口再创建对应的Service类(业务逻辑层),通过Service类去调用Mapper接口中相应的增删改查方法,Mapper接口又会去调用相应mapper.xml文件中真正的SQL语句。
⑤控制器Controller用来处理请求,创建一个控制器类HomeController,注入相关的service,并增加一个处理请求的方法,声明方法的访问路径为/index,
⑥接下来就是配置controller中用到的html文件,开头先指定模板引擎,依赖的样式文件和图片的绝对路径不用改,相对路径的修改方式如下 。
<!-- 修改前 -->
<link rel="stylesheet" href="css/global.css" />
<!-- 修改后,去static下寻找资源 -->
<link rel="stylesheet" th:href="@{/css/global.css}" />
⑦社区首页完成后,开发分页组件分页显示其它帖子。封装分页相关的信息在entity下的page实体类里,封装了分页相关的信息,然后去HomeController里增加page的相关内容,利用总数、当前页、下一页、上一页等分页信息来进行分页。
@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<DiscussPost> list = discussPostService.findDiscussPosts(0, page.getOffset(), page.getLimit());
List<Map<String, Object>> discussPosts = new ArrayList<>();
if (list != null) {
for (DiscussPost post : list) {
Map<String, Object> map = new HashMap<&g