前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue3 + TS + Ant Design +Gin+Mysql实现表格数据持久化存储

Vue3 + TS + Ant Design +Gin+Mysql实现表格数据持久化存储

作者头像
希里安
发布2023-10-30 18:42:13
3350
发布2023-10-30 18:42:13
举报
文章被收录于专栏:希里安

关注“希里安”,get更多有用干货

昨天介绍这个antd表格的试用,我们先看了官方的示例,然后直接使用vben admin提供的表格看一下:

这里我们是直接使用了vben的

代码语言:javascript
复制
\src\views\demo\table\Basic.vue

的基础组件,可以看到以上的效果,可是也只是一个示例,如果想实现前后端交互,实现增删改查的功能,就得后端连接数据库,数据库类型可以根据自己的需求选择,可以是mysql也可以是pgsql或者其他的。

那我们这里来使用vite+vue+ts的方式实现前端显示数据库的表信息,并能从前端更改后端数据库的信息。

先说说实现的流程思想,就是前端开发一个页面,后端连接数据库,将查询的结果返回给前端,具体如下:

1、前端使用vue+ts+antd的table组件渲染表格

2、通过axios请求后端api获取表格数据

3、后端api使用orm工具查询数据库中的表数据

4、将查询结果返回给前端组件

5、前端设置返回的数据到 Table 的 dataSource,表格会自动渲染

通过这个过程涉及到前后端的交互,对于vue+ts+antd以及ORM工具操作数据库的知识有一个更加深入的了解,也是全栈开发学习的必经之路。

这里一步步梳理下实现过程:

1、创建vue+vite项目

代码语言:javascript
复制
npm create vite@latest my-vue-app --template vue

2、安装antdesign组件以及axios

代码语言:javascript
复制
Npm install ant-design-vue axios
yarn add ant-design-vue axios

3、创建 Table 组件,使用 Ant Design 的 Table 渲染表格:

代码语言:javascript
复制
<template>
 <div>
 <a-table :columns="columns"
:data-source="dataSource" />
 <a-button
@click="addRecord">添加</a-button>
 </div>
</template>
<script
lang="ts">
import {
defineComponent } from 'vue'
import { Table,
Button } from 'ant-design-vue'
import axios
from 'axios'
export default
defineComponent({
 components: {
 ATable: Table,
 AButton: Button
 },
 data() {
 return {
 columns: [],
 dataSource: []
 }
 },
 methods: {
 addRecord() {
 axios.post('/addRecord')
 },
 getData() {
 axios.get('/tableData').then(res => {
 this.dataSource = res.data
 })
 }
 }
})
</script>

4、开发后端api,这里使用go的gin框架,使用gorm连接mysql数据库

代码语言:javascript
复制
package main
import (
 "errors"
 "github.com/gin-gonic/gin"
 "gorm.io/driver/mysql"
 "gorm.io/gorm"
)
type Record
struct{}
func main() {
 // 连接数据库
 db, err :=
gorm.Open(mysql.Open("root:password@tcp(localhost:3306)/database?charset=utf8mb4"),
&gorm.Config{})
 if err != nil {
 errors.New("数据库连接失败!")
 }
 // 数据库迁移
 db.AutoMigrate(&Record{})
 // 创建 Gin 路由
 r := gin.Default()
 // 跨域中间件
 r.Use(CORSMiddleware())
 // 添加记录
 r.POST("/addRecord", func(c
*gin.Context) {
 db.Create(&Record{})
 })
 // 获取记录,返回 JSON
 r.GET("/tableData", func(c
*gin.Context) {
 var records []Record
 db.Find(&records)
 c.JSON(200, records)
 })
 // 启动服务器
 r.Run(":8089")
}
// CORS 中间件
func
CORSMiddleware() gin.HandlerFunc {
 return func(c *gin.Context) {
 c.Writer.Header().Set("Access-Control-Allow-Origin",
"*")
 c.Writer.Header().Set("Access-Control-Allow-Headers",
"Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token,
Authorization, accept, origin, Cache-Control, X-Requested-With")
 c.Writer.Header().Set("Access-Control-Allow-Methods",
"POST, OPTIONS, GET, PUT, PATCH, DELETE")
 if c.Request.Method ==
"OPTIONS" {
 c.AbortWithStatus(204)
 return
 }
 c.Next()
 }
}

5、前端调用 axios.get('/tableData') 请求数据设置到this.dataSource,表格自动渲染

6、添加表格增删改查功能

- 添加:axios.post('/addRecord'),后端接收并 INSERT 添加记录

- 删除:在表格行上添加删除按钮, axios.post('/deleteRecord'),后端接收并 DELETE 删除记录

- 修改:在表格行添加编辑按钮,弹出编辑表格,axios.put('/updateRecord'),后端接收并 UPDATE 修改记录

7、 后端对应添加

代码语言:javascript
复制
/addRecord、/deleteRecord 和 /updateRecord

接口,接收请求并执行 SQL 语句

8、前端根据结果调用刷新表格

代码语言:javascript
复制
axios.get('/tableData')

配置项:

前端:

代码语言:javascript
复制
- TS 配置:tsconfig.json
- 界面组件:*.vue 文件
- axios 配置:axios.ts 文件
- 路由:router.ts 文件
- Pinia 状态管理(可选)

后端:

代码语言:javascript
复制
- Gin 配置:gin.go 文件
- 数据库配置:database.go 文件
- 前端接口:*.go 文件
- 日志、异常处理等

完整的 Gin + MySQL项目主要包含:

代码语言:javascript
复制
1. 连接数据库:使用 GORM 连接 MySQL
2. 数据库迁移:db.AutoMigrate()
3. 定义表结构模型:如Record 结构体
4. Gin 路由和接口:处理请求逻辑
5. GORM 数据库操作:CURD 记录 
6. 启动 Gin 服务器
7. 异常处理、日志记录等

今天的分享就到这了,我这还没搭数据库,明天接着开发,争取早日实现前端页面的完整开发。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 希里安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档