仿牛客网社区开发(开发社区首页)
概要
涉及的数据库表-帖子讨论表
user_id:表示帖子由哪个用户发布,关联user表
开发社区首页,显示前10条帖子
entity - 编写DiscussPost实体类
dao - DiscussPostMapper
selectDiscussPosts: 分页获取指定用户的帖子(即userId等于0,表示获取所有用户的帖子,通过动态sql拼接实现)
selectDisscussPostRows: 获取指定用户的总帖子数
dao - discuss-mapper配置文件(sql)
service - DiscussPostService,UserService
通过userId,获取到对应的User
controller - HomeController
首页 - index.html
使用thymeleaf模板引擎
map.user.headUrl 相当于 map.get(“user”) 得到User之后 , 调用getHeadUrl()
日期格式化
帖子展示效果
开发分页组件,分页显示帖子
Page组件
package com.lin.util;
public class Page {
//当前页码
private int current = 1;
//显示上限
private int limit = 10;
//数据总数(用于计算总页数)
private int rows;
//查询路径(用于复用分页链接)
private String path;
public int getCurrent() {
return current;
}
public void setCurrent(int current) {
if(current > 1){
this.current = current;
}
}
public int getLimit() {
return limit;
}
public void setLimit(int limit) {
if(limit>=10 && limit<=100){
this.limit = limit;
}
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
if(rows>0){
this.rows = rows;
}
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
/**
* 获取当前页的起始行
*/
public int getOffset(){
return (current-1)*limit;
}
/**
* 获取总页数
*/
public int getTotal(){
int pageNum = rows/limit;
if(rows%limit==0){
return pageNum;
}else{
return pageNum+1;
}
}
/**
* 获取起始页码
*/
public int getFrom(){
int from = current-2;
return from<1 ? 1 : from;
}
/**
* 获取结束页码
*/
public int getTo(){
int to = current+2;
int total = getTotal();
return to>total ? total : to;
}
}
controller - getIndexPage()
index.html
@{${page.path}(current=${page.current-1})} 相当于 @{/index?current=xxx},springmvc 自动将current属性注入到Page中