目录
1.创建Spring Boot项目:
使用Spring Initializr(https://start.spring.io/)创建一个新的Spring Boot项目,选择Web、JPA和MySQL等依赖。
目录如下
2.配置MySQL数据库:
在application.properties文件中添加MySQL连接信息,例如:
spring.datasource.url=jdbc
mysql://localhost
3306/mydb?useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto=update
3.创建博客实体类:
创建一个名为Blog的类,包含博客的标题、内容、创建时间等属性,并使用@Entity注解标记该类。
@Id
@GeneratedValue
private Long id;
private String title;
@Basic(fetch = FetchType.LAZY)
@Lob
private String content;
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;
@Temporal(TemporalType.TIMESTAMP)
private Date updateTime;
private String description;
private String flag;
private Integer views;
private String image;
4.在MySQL中创建一个名为blog的数据库表
表包含id、title、content、create_time等字段,并使用Blog实体类的属性作为字段名。
5.创建一个博客Repository接口
继承JpaRepository接口,并注入Blog实体类。
@Query("select b from Blog b ")
List<Blog> findTop(Pageable pageable);
//select * from t_blog where title like '%内容%'
@Query("select b from Blog b where b.title like ?1 or b.content like ?1")
Page<Blog> findByQuery(String query, Pageable pageable);
6.创建一个博客Service接口
定义博客的增加、删除、修改、查询等方法。然后创建一个博客ServiceImpl类,实现BlogService接口,并注入BlogRepository和RedisTemplate等依赖。
Blog getBlog(Long id);
Page<Blog> listBlog(Pageable pageable);
List<Blog> listRecommendBlogTop(Integer size);
Long countBlog();
Blog saveBlog(Blog blog);
7.创建一个博客Controller类
定义博客的CRUD操作方法,并注入BlogServiceImpl依赖。
protected final static int PageBreak = 5;
@Autowired
private BlogService blogService;
@GetMapping("/")
public String home(@PageableDefault(size = BlogController.PageBreak, sort = {"updateTime"}, direction = Sort.Direction.DESC) Pageable pageable, Model model) {
long blogTotal = blogService.countBlog();
int pageNumber = pageable.getPageNumber();
long pageCount = 0;
long rem = blogTotal % BlogController.PageBreak;
if (rem == 0) {
pageCount = blogTotal / BlogController.PageBreak;
} else {
pageCount = (blogTotal - rem) / BlogController.PageBreak + 1;
}
if ((pageNumber + 1) > pageCount || pageNumber < 0) {
model.addAttribute("message", "哦吼,没有找到当前页面的博客信息哦!");
return "client/404";
}
pageNumber++;
model.addAttribute("blogs", blogService.listBlog(pageable));
model.addAttribute("blogTotal", blogTotal);
model.addAttribute("currentPage", pageNumber);
model.addAttribute("pageCount", pageCount);
List<Integer> navigators = new ArrayList<Integer>();
if (pageNumber - 1 > 0) {
if (pageNumber - 2 > 0 && pageNumber == pageCount) {
navigators.add(pageNumber - 2);
}
navigators.add(pageNumber - 1);
}
navigators.add(pageNumber);
if (pageNumber + 1 <= pageCount) {
navigators.add(pageNumber + 1);
if (pageNumber + 2 < pageCount && pageNumber == 1) {
navigators.add(pageNumber + 2);
}
}
model.addAttribute("navigators", navigators);
model.addAttribute("recommendBlogTop", blogService.listRecommendBlogTop(15));
return "client/home";
}
@GetMapping("blog/{id}")
public String blog(@PathVariable Long id, Model model) {
Blog blog = blogService.getBlog(id);
if (blog == null) {
model.addAttribute("message", "哦吼,没有找到当前的博客记录哦!");
return "client/404";
}
model.addAttribute("blog", blog);
blog.addView();
blogService.saveBlog(blog);
return "client/blog";
}
8.配置Redis
在application.properties文件中添加Redis连接信息,例如:
spring.redis.host=localhost
spring.redis.port=6379
9.创建HTML模板
使用Thymeleaf或FreeMarker等模板引擎创建HTML模板,用于展示博客内容。
10.创建前端页面
使用HTML、CSS和JavaScript等技术创建前端页面,与后端接口进行交互。
11.访问项目
望这些指导对您有所帮助。