1. 后端spring boot实现我们将使用spring boot作为后端框架,并使用mysql作为数据库。
1.1 创建article实体类首先,在com.example.demo.entity包下创建一个名为article.java的新类,并添加以下内容:
public class article { private integer id; private string title; private string content; private integer authorid; // getter and setter methods}
1.2 创建articlemapper接口在com.example.demo.mapper包下创建一个名为articlemapper.java的新接口,并添加以下内容:
@mapperpublic interface articlemapper { list<article> findall(); article findbyid(integer id); void insert(article article); void update(article article); void delete(integer id);}
在com.example.demo.service.impl包下创建一个名为articleserviceimpl.java的新类,并添加以下内容:
@servicepublic class articleserviceimpl implements articleservice { @autowired private articlemapper articlemapper; @override public list<article> findall() { return articlemapper.findall(); } @override public article findbyid(integer id) { return articlemapper.findbyid(id); } @override public void create(article article) { articlemapper.insert(article); } @override public void update(article article) { articlemapper.update(article); } @override public void delete(integer id) { articlemapper.delete(id); }}
1.3创建articlecontroller类在com.example.demo.controller包下创建一个名为articlecontroller.java的新类,并添加以下内容:
@restcontroller@requestmapping(/api/article)public class articlecontroller { @autowired private articleservice articleservice; @getmapping public list<article> list() { return articleservice.findall(); } @getmapping(/{id}) public article detail(@pathvariable integer id) { return articleservice.findbyid(id); } @postmapping public result create(@requestbody article article) { articleservice.create(article); return result.success(文章发布成功); } @putmapping(/{id}) public result update(@pathvariable integer id, @requestbody article article) { article.setid(id); articleservice.update(article); return result.success(文章更新成功); } @deletemapping(/{id}) public result delete(@pathvariable integer id) { articleservice.delete(id); return result.success(文章删除成功); }}
至此,我们已经完成了后端的发布、编辑、删除文章功能。
2. 前端vue3实现2.1 创建文章列表页面组件在src/views目录下创建一个名为articlelist.vue的新组件,并添加以下内容:
<template> <div> <el-table :data="articles"> <el-table-column prop="id" label="id" width="80"></el-table-column> <el-table-column prop="title" label="标题"></el-table-column> <el-table-column label="操作" width="180"> <template v-slot="{ row }"> <el-button @click="editarticle(row.id)">编辑</el-button> <el-button type="danger" @click="deletearticle(row.id)">删除</el-button> </template> </el-table-column> </el-table> </div></template> <script>import { ref } from vue;import axios from axios; export default { setup() { const articles = ref([]); const fetcharticles = async () => { const response = await axios.get(/api/article); articles.value = response.data; }; const editarticle = (id) => { // 跳转到编辑页面 }; const deletearticle = async (id) => { await axios.delete(`/api/article/${id}`); fetcharticles(); }; fetcharticles(); return { articles, editarticle, deletearticle }; },};</script>
2.2 创建文章发布页面组件在src/views目录下创建一个名为createarticle.vue的新组件,并添加以下内容:
<template> <el-form ref="form" :model="form" label-width="80px"> <el-form-item label="标题" prop="title"> <el-input v-model="form.title"></el-input> </el-form-item> <el-form-item label="内容" prop="content"> <el-input type="textarea" v-model="form.content"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitform('form')">发布文章</el-button> </el-form-item> </el-form></template> <script>import { reactive } from vue;import axios from axios; export default { setup() { const form = reactive({ title: , content: }); const submitform = async () => { try { await axios.post(/api/article, form); alert(文章发布成功); } catch (error) { alert(文章发布失败); } }; return { form, submitform }; },};</script>
2.3 创建文章编辑页面组件在src/views目录下创建一个名为editarticle.vue的新组件,并添加以下内容:
<template> <el-form ref="form" :model="form" label-width="80px"> <el-form-item label="标题" prop="title"> <el-input v-model="form.title"></el-input> </el-form-item> <el-form-item label="内容" prop="content"> <el-input type="textarea" v-model="form.content"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitform">更新文章</el-button> </el-form-item> </el-form></template> <script>import { ref, reactive, onmounted } from vue;import axios from axios; export default { props: { id: { type: number, required: true, }, }, setup(props) { const form = reactive({ title: , content: }); const fetcharticle = async () => { const response = await axios.get(`/api/article/${props.id}`); form.title = response.data.title; form.content = response.data.content; }; const submitform = async () => { try { await axios.put(`/api/article/${props.id}`, form); alert(文章更新成功); } catch (error) { alert(文章更新失败); } }; onmounted(fetcharticle); return { form, submitform }; },};</script>
定义了一个组件名为editarticle.vue的新组件,需要一个名为id的属性。fetcharticle函数会在组件加载时被调用,以获取文章信息并将其填充到表单中。点击更新文章按钮时,会调用submitform函数,将表单数据发送到后端以更新文章。
以上就是基于springboot和vue3的博客平台发布、编辑、删除文章功能怎么实现的详细内容。