前后端分离基础入门(6) 实现修改删除功能

实现修改功能

后端操作

实现接口 mapper
void updateBook(Book book);

<select id="updateBook" parameterType="Book">
        update book set name=#{name},author=#{author} where id=#{id};
    </select>
@PostMapping("/update")
    public void update(@RequestBody Book book){
        bookMapper.updateBook(book);
    }

前端操作

通过ele的语法
提交时绑定一个事件,可以获得当前ID选择表单对象信息

<template slot-scope="scope">
          <el-button @click="edit(scope.row)" type="text" size="small">修改</el-button>
          <el-button @click="deleteBook(scope.row)" type="text" size="small">删除</el-button>
        </template>

提交事件代码:
跳转到修改页面 并吧id传过去

edit(row) {
      console.log(row.id)
      this.$router.push({
        path:'/update',
        query:{
          id:row.id
        }
      })
    },

修改页面代码:
在创建时 调用后端获得当前ID对应的图书数据,点击提交按钮后调用后端的更新功能

<template>
<div>
  <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
    <el-form-item label="图书ID" v-show="false">
      <el-input v-model="ruleForm.id" readonly></el-input>
    </el-form-item>

    <el-form-item label="图书名称" prop="name">
      <el-input v-model="ruleForm.name"></el-input>
    </el-form-item>

    <el-form-item label="作者" prop="author">
      <el-input v-model="ruleForm.author"></el-input>
    </el-form-item>

    <el-form-item>
      <el-button type="primary" @click="submitForm('ruleForm')">修改</el-button>
      <el-button @click="resetForm('ruleForm')">重置</el-button>
    </el-form-item>
  </el-form>
</div>
</template>

<script>
export default {
  data() {
    return {
      ruleForm: {
        id: '',
        name: '',
        author: '',
      },
      rules: {
        id: [
          { required: true, message: '请输入id', trigger: 'blur' },
        ],
        name: [
          { required: true, message: '请输入图书名称', trigger: 'blur' },
        ],
        author: [
          { required: true, message: '请输入作者', trigger: 'blur' }
        ],
      }
    };
  },
  methods: {
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        const _this=this
        if (valid) {
          axios.post('http://localhost:8181/book/update',this.ruleForm).then(function (resp){
          })
        } else {
          return false;
        }
      });
    },
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
  },
  created(){
    const _this=this
    axios.get('http://localhost:8181/book/getBook/'+this.$route.query.id).then(function (resp){
      console.log(resp)
        _this.ruleForm=resp.data
    })
  }
}
</script>

实现删除功能

后端操作

写接口和mapper controller 完全一样不说了

前端操作

也比较简单,点击时互动后端即可

deleteBook(row){
      axios.get('http://localhost:8181/book/deleteBook/'+row.id).then(function (resp){
        location. reload()
      })
    }

总结

主要还是先搞明白了前后端分离基础实现,一些比较复杂的操作并没有去实现 后续还需学习

posted @ 2021-08-15 16:57  一个经常掉线的人  阅读(924)  评论(0)    收藏  举报