Element UI+Spring Boot进行CRUD的实例

ElementUI安装与使用指南

前端代码:点击查看learnelementuispringboot项目源码

后端代码:点击查看 LearnElementUiAndSpringBoot

一、前端配置

安装axios

  • axios官网
  • axios中文文档
  • 安装指令:npm install axios

在这里插入图片描述

二、后端配置

  • springboot3
  • mybatis-plus 官网安装教程
  • MySQL数据库
    数据库book表的结构如下图

在这里插入图片描述

效果图

在这里插入图片描述

crud-query-delete.vue(CRUD实例)页面效果图
在这里插入图片描述

在这里插入图片描述

crud-update.vue(编辑)页面效果图
在这里插入图片描述
在这里插入图片描述

crud-insert.vue(添加)页面效果图
在这里插入图片描述

项目结构

一、后端
在这里插入图片描述
二、前端
在这里插入图片描述

三、前端代码

1、crud-query-delete.vue代码

import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue'
import ElementUI from "@/views/ElementUI.vue";
import PagePath from "@/components/PagePath.vue";
import ElButton from "@/views/el-button.vue";
import ElLink from "@/views/el-link.vue";
import ElRadio from "@/views/el-radio.vue";
import ElRow_elCol from "@/views/el-row_el-col.vue";
import ElContainer from "@/views/el-container.vue";
import ElContainerExample from "@/views/el-container-example.vue";
import ElCheckbox from "@/views/el-checkbox.vue";
import ElInput from "@/views/el-input.vue";
import ElInputNumber from "@/views/el-input-number.vue";
import ElSwitch from "@/views/el-switch.vue";
import ElUpload from "@/views/el-upload.vue";
import ElForm from "@/views/el-form.vue";
import ElSelect from "@/views/el-select.vue";
import ElTable from "@/views/el-table.vue";
import CrudQueryDelete from "@/views/crud-query-delete.vue";
import CrudUpdate from "@/views/crud-update.vue";
import CrudInsert from "@/views/crud-insert.vue";Vue.use(VueRouter)const routes = [{path: PagePath.crud_insert,name: 'crud-insert',component: CrudInsert},{path: PagePath.crud_update,name: 'crud-update',component: CrudUpdate},{path: PagePath.crud_query_delete,name: 'crud-query-delete',component: CrudQueryDelete},{path: PagePath.el_table,name: 'el-table',component: ElTable},{path: PagePath.el_select,name: 'el-select',component: ElSelect},{path: PagePath.el_form,name: 'el-form',component: ElForm},{path: PagePath.el_upload,name: 'el-upload',component: ElUpload},{path: PagePath.el_switch,name: 'el-switch',component: ElSwitch},{path: PagePath.el_input_number,name: 'el-input-number',component: ElInputNumber},{path: PagePath.el_input,name: 'el-input',component: ElInput},{path: PagePath.el_checkbox,name: 'el-checkbox',component: ElCheckbox},{path: PagePath.el_container_example,name: 'el-container-example',component: ElContainerExample},{path: PagePath.el_container,name: 'el-container',component: ElContainer},{path: PagePath.el_row_el_col,name: 'el-row_el-col',component: ElRow_elCol},{path: PagePath.el_radio,name: 'el-link',component: ElRadio},{path: PagePath.el_link,name: 'el-link',component: ElLink},{// path: '/el_button',// path: PagePath.data().el_button,path: PagePath.el_button,name: 'el-button',component: ElButton},{path: '/element_ui',name: 'element-ui',component: ElementUI},{path: '/',name: 'home',component: HomeView},{path: '/about',name: 'about',// route level code-splitting// this generates a separate chunk (about.[hash].js) for this route// which is lazy-loaded when the route is visited.component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')}
]const router = new VueRouter({mode: 'history',base: process.env.BASE_URL,routes
})export default router

2、crud-update.vue代码

<script>
import axios from "axios";
import pagePath from "@/components/PagePath.vue";const BASE_URL = 'http://localhost:8081/book/'export default {name: 'crud_update',created() {let _this = this;axios.get(BASE_URL + 'findById/' + this.$route.query.bookid).then(resp => {console.log(resp.data)_this.book = resp.data})},data() {return {book: {bookid: 0,name: '',price: 0,},rules: {name: [{required: true, message: '请输入名称', trigger: 'blur'},{min: 1, max: 10, message: '长度在 1 到 10 个字符', trigger: 'blur'}],}}},methods: {submitForm(book) {let _this = this//这个是全局的this.$refs[book].validate((valid) => {if (valid) {console.log(this.book);axios.put(BASE_URL + 'update', this.book).then(resp => {if (resp.data) {_this.$alert('《' + _this.book.name + '》修改成功', '提示', {confirmButtonText: '确定',callback: action => {_this.$router.push(pagePath.crud_query_delete)}});}})} else {console.log('error submit!!');return false;}});},},
}</script><template><div class="el_update_root"><el-form ref="form" :model="book" label-width="80px" :rules="rules"><el-form-item label="编号" prop="bookid" :rules="[{required:true, message:'id不能为空'},{type:'number', message: 'id必须为数字'}]"><!--        编号不能修改,只读     --><el-input v-model.number="book.bookid" readonly/></el-form-item><el-form-item label="名称" prop="name"><el-input v-model="book.name" placeholder="请输入名称"/></el-form-item><el-form-item label="价格" prop="price" :rules="[{required:true, message:'价格不能为空'},{type:'number', message: '价格必须为数字'}]"><el-input v-model.number="book.price" placeholder="请输入价格"/></el-form-item><el-form-item><el-button type="primary" @click="submitForm('form')">提交</el-button><el-button>取消</el-button></el-form-item></el-form></div></template><style>
.el_update_root {margin-left: 300px;margin-right: 300px;text-align: left;display: flex;justify-content: center;
}</style>

3、crud_insert.vue代码

<script>
import axios from "axios";
import pagePath from "@/components/PagePath.vue"
const BASE_URL = 'http://localhost:8081/book/'export default {name: 'crud_insert',data() {return {book: {bookid: '',name: '',price: '',},rules: {name: [{required: true, message: '请输入名称', trigger: 'blur'},{min: 1, max: 10, message: '长度在 1 到 10 个字符', trigger: 'blur'}],}}},methods: {submitForm(book) {let _this = this//这个是全局的this.$refs[book].validate((valid) => {if (valid) {console.log(this.book);axios.post(BASE_URL + 'add', this.book).then(resp => {if (resp.data) {_this.$alert('《' + _this.book.name + '》添加成功', '提示', {confirmButtonText: '确定',callback: action => {_this.$router.push(pagePath.crud_query_delete)}});}})} else {console.log('error submit!!');return false;}});},},
}</script><template><div class="el_insert_root"><el-form ref="form" :model="book" label-width="80px" :rules="rules"><el-form-item label="编号" prop="bookid" :rules="[{required:true, message:'id不能为空'},{type:'number', message: 'id必须为数字'}]"><!--        编号不能修改,只读     --><el-input v-model.number="book.bookid" placeholder="请输入编号"/></el-form-item><el-form-item label="名称" prop="name"><el-input v-model="book.name" placeholder="请输入名称"/></el-form-item><el-form-item label="价格" prop="price" :rules="[{required:true, message:'价格不能为空'},{type:'number', message: '价格必须为数字'}]"><el-input v-model.number="book.price" placeholder="请输入价格"/></el-form-item><el-form-item><el-button type="primary" @click="submitForm('form')">提交</el-button><el-button>取消</el-button></el-form-item></el-form></div></template><style>
.el_insert_root {margin-left: 300px;margin-right: 300px;text-align: left;display: flex;justify-content: center;
}</style>

以上就是Element UI+Spring Boot进行CRUD的实例全部内容讲解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/453122.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#验证字符串的长度,用正则表达式 vs 字符数组长度或字符串的长度

目录 一、使用的方法 1.使用正则表达式 2.通过计算字符串的长度验证 二、实例 1.源码 2.生成效果 一、使用的方法 1.使用正则表达式 使用正则表达式可以判断和限制用户输入的字符串长度。 比如验证用户密码不得少于8为&#xff0c;匹配的正则表达式"^.{8,}$"…

电脑上常见的绘图软件有哪些?

现在在电脑上绘图很流行&#xff0c;不仅可以随时更改&#xff0c;还可以提高绘图效率&#xff0c;绘图软件中有很多工具。市场上的计算机绘图软件种类繁多。包括艺术设计、工业绘图和3D绘图。那么每个绘图软件都有自己的特点。那么&#xff0c;哪个更适合计算机绘画软件呢&…

极速上手:使用Jmeter轻松实现N种参数化

参数化的方式&#xff1a; 一、使用用户自定义变量 一种方式&#xff1a;直接在测试计划中添加用户自定义变量 另外一种方式&#xff1a;配置元件——用户自定义变量 示例&#xff1a;用户自定义变量&#xff0c;登录手机号码 在接口请求的时候&#xff0c;进行引用 请求之后&…

PyTorch 2.2 中文官方教程(十一)

使用 PyTorch C 前端 原文&#xff1a;pytorch.org/tutorials/advanced/cpp_frontend.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 PyTorch C 前端是 PyTorch 机器学习框架的纯 C 接口。虽然 PyTorch 的主要接口自然是 Python&#xff0c;但这个 Python API 坐…

Qt程序设计-自定义QLineEdit控件添加鼠标单击事件

本文讲解Qt自定义QLineEdit控件添加鼠标单击事件。 QLineEdit控件默认没有单击事件,但是项目开发中有时需要单击事件,比如单击QLineEdit控件弹出软键盘。具体实现过程如下: 创建项目,在项目中添加一个类,命名为MyLineEdit 输入继承QLineEdit #ifndef MYLINEEDIT_H #defi…

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(七)

原文&#xff1a;Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十六章&#xff1a;使用 RNN 和注意力进行自然语言处理 当艾伦图灵在 1950 年想象他著名的Turing 测试时&#xff0c;他提出了…

FL Studio Producer Edition 21.2.2全插件版+Crack下载链接(亲测可用,非钓鱼)

不知道为什么现在钓鱼的这么多&#xff08;有答案的请在评论区上告诉我&#xff09;&#xff0c;就一个学习版的编曲软件有必要这样子搞吗&#xff1f;我也是在各类博客上找了一大堆教程&#xff0c;根本没几个能用的&#xff0c;索性直接到海盗湾上找了一个&#xff0c;发现可…

python 爬虫安装http请求库

我的是window环境&#xff0c;安装的python3&#xff0c;如果再linux环境&#xff1a;pip install requests 开始&#xff1a; 上面我们成功发送请求并获取到响应&#xff0c;现在需要解析html或xml获取数据&#xff0c;因此我使用现成的工具库Beautiful Soup

windows 搭建nginx http服务

下载 下面链接直接点击下载&#xff0c;下载的就是包含rtmp服务器相关功能的&#xff0c;只不过需要配置下 Index of /download/ (ecsds.eu) nginx 1.7.11.3 Gryphon.zip直接点击额下面的连接即可下载 http://nginx-win.ecsds.eu/download/nginx%201.7.11.3%20Gryphon.zip …

操作系统-【预备学习-1】(Linux 文件目录)

文章目录 相关知识目录结构进入目录补充查看目录创建文件删除文件创建文件夹删除文件夹文件和文件夹拷贝文件和文件夹移动/重命名 任务要求 相关知识 目录结构 Linux 文件系统是树形层次结构&#xff0c;具体如下图所示&#xff0c;最重要的是根目录&#xff08;/&#xff09…

MYSQL——MySQL8.3无法启动

在新电脑上装了个MySQL&#xff0c;但是无法使用net start mysql启动&#xff0c;很是纳闷&#xff0c;使用mysqld --console去查看报错&#xff0c;也是没报错的&#xff0c;但是奇怪的是&#xff0c;我输入完这个mysqld --console之后&#xff0c;就等于启动了mysql了&#x…

HBase相关面试准备问题

为什么选择HBase 1、海量存储 Hbase适合存储PB级别的海量数据&#xff0c;在PB级别的数&#xff0c;能在几十到几百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正是因为Hbase良好的扩展性&#xff0c;才为海量数据的存储提供了便利。 2、列式存储 这里的列式存储其实说的…