老早之前用了hexo 傻瓜式部署到git.io上 那个时候想 自己搭建一个试一试 没有想到现在回头来补这个坑了 处处都是问题 毕竟刚看完SSM框架 自己打算练习下 (没有写得太难 本身自己也不太会)
数据库 完全用不上啊 个人博客如果没有什么标签 要搞啥多表 数据库意义不大 而且数据量太小了
这里就当走个流程了
约等于没有 之后 列表blog列表展示 虽然是是从 数据库取得 之后分页查到pagehelper插件 方便得一批23333
对应数据表就行 用了lombok插件
package org.zhxu.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.sql.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Blog {
public String title_id;
public Date post_time;
}
BlogMapper.xml
<mapper namespace="org.zhxu.dao.BlogMapper">
mapper>
BlogMapper.java
package org.zhxu.dao;
import org.apache.ibatis.annotations.*;
import org.zhxu.pojo.Blog;
import java.sql.Date;
import java.util.List;
// 文章
// contextid -> titile
// post-time
public interface BlogMapper {
//增加一个blog
@Insert("insert into blog (title_id, post_time) value (#{title_id}, #{post_time})")
int addBlog(Blog blog);
//根据id删除一个blog
@Delete("delete from blog where title_id = #{title_id}")
int deleteBlogById(@Param("title_id") String title_id);
//更新blog
@Update("update blog set title_id = #{nid}, post_time = #{npt} where title_id = #{old_id}")
int updateBlog(@Param("nid") String nid, @Param("npt") Date ntp, @Param("old_id") String old_id);
//
//根据id查询,返回一个blog
@Select("select * from blog where title_id = #{title_id}")
Blog queryBlogById(String title_id);
//查询全部Book,返回list集合
@Select("select * from blog")
List<Blog> queryAllBlog();
}
BlogService.java
package org.zhxu.service;
import org.zhxu.pojo.Blog;
import java.sql.Date;
import java.util.List;
public interface BlogService {
//增加一个blog
int addBlog(Blog blog);
// 根据id删除一个blog
int deleteBlogById(String title_id);
// //更新Blog
int updateBlog(Blog blog, String old_id);
// //根据id查询,返回一个Blog
Blog queryBlogById(String title_id);
//查询全部Book,返回list集合
List<Blog> queryAllBlog();
// 读取服务器文件 返回md文件字符串
String BlogContext(String title_id);
}
BlogServiceImpl.java
package org.zhxu.service;
import org.zhxu.dao.BlogMapper;
import org.zhxu.pojo.Blog;
import java.io.*;
import java.sql.Date;
import java.util.List;
public class BlogServiceImpl implements BlogService {
private BlogMapper blogMapper;
public void setBlogMapper(BlogMapper blogMapper) {
this.blogMapper = blogMapper;
}
@Override
public int addBlog(Blog blog) {
return blogMapper.addBlog(blog);
}
@Override
public int deleteBlogById(String title_id) {
return blogMapper.deleteBlogById(title_id);
}
@Override
public int updateBlog(Blog blog, String old_id) {
return blogMapper.updateBlog(blog.title_id, blog.post_time, old_id);
}
@Override
public Blog queryBlogById(String title_id) {
return blogMapper.queryBlogById(title_id);
}
@Override
public List<Blog> queryAllBlog() {
return blogMapper.queryAllBlog();
}
@Override
public String BlogContext(String title_id) {
File file = new File(BlogServiceImpl.class.getClassLoader().getResource("../").getPath());
System.out.println(file.getAbsoluteFile());
BufferedReader br = null;
StringBuffer sb = null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file + "/BlogContent/" + title_id + ".md"),"utf-8")); //这里可以控制编码
sb = new StringBuffer();
String line = null;
while((line = br.readLine()) != null) {
sb.append(line + "\n");// md 格式 记得返回\n
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
String data = new String(sb); //StringBuffer ==> String
return data;
}
}
到这里 就是和前端对接得地方了 稍微学了下 restful风格 其实蛮简单得 还方便
BlogController.java
package org.zhxu.controller;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.zhxu.pojo.Blog;
import org.zhxu.service.BlogService;
import java.util.List;
@Controller
@RequestMapping("/Blogs")
public class BlogController {
@Autowired
@Qualifier("BlogServiceImpl")
private BlogService blogService;
@RequestMapping("/showall")
public String list(Model model) {
List<Blog> list = blogService.queryAllBlog();
model.addAttribute("list", list);
return "allBlog";
}
@RequestMapping("/gotos/{p}")
public String showall(Model model, @PathVariable(value = "p", required = false) int p) {
PageHelper.startPage(p, 3);
List<Blog> list = blogService.queryAllBlog();
model.addAttribute("list", list);
return "displayall";
}
@RequestMapping("/beforeAddBlog")
public String beforeAddBlog() {
return "addBlog";
}
@RequestMapping("/afterAddBlog")
public String addBlog(Blog blog) {
blogService.addBlog(blog);
return "redirect:/Blogs/showall";
}
@RequestMapping("/del/{title_id}")
public String deleteBolg(@PathVariable("title_id") String id) {
blogService.deleteBlogById(id);
return "redirect:/Blogs/showall";
}
@RequestMapping("/toUpdateBlog")
public String toUpdateBook(Model model, String id) {
Blog blog = blogService.queryBlogById(id);
model.addAttribute("blog",blog);
model.addAttribute("old_id", blog.title_id);
System.out.println(blog);
return "updateBlog";
}
@RequestMapping("/updateBlog")
public String updateBook(Model model, Blog blog, String old_id) {
System.out.println(blog.toString() + old_id);
blogService.updateBlog(blog, old_id);
return "redirect:/Blogs/showall";
}
@RequestMapping("/content/{Title_id}")
public String recontent(Model model, @PathVariable(value = "Title_id", required = false) String Title_id) {
model.addAttribute("BlogContent", blogService.BlogContext(Title_id));
model.addAttribute("Blog", blogService.queryBlogById(Title_id));
return "BlogContext";
}
}
之后便是前端得乱写 胡搞
在controller层 我用到了一个分页插件
.md反馈到前端 我想了一会(其实是没有人告诉我原来数据库文本可以存很长 很长。。。 所有我就把md搞本地了 这样之后维护也方便 直接操作上传文件就行)
整个项目是我乱搞出来得 没有啥难度 只是刚学完 瞎写写
前端篇 之后发