如何在golang实现用户增删改查

要使用 Go 语言配合 Gin 框架和 GORM 来实现基于 MySQL 的用户增删改查功能,你需要先确保你的环境中安装了 MySQL,并且创建了相应的数据库和用户。以下是一个简单的示例,展示了如何设置 Gin 路由和 GORM,并使用 MySQL 实现用户的增删改查功能。

  1. 创建 main.go 文件
 
  

go复制代码

package main
import (
"fmt"
"log"
"net/http"
"github.com/gin-gonic/gin"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
// User 模型
type User struct {
gorm.Model
Name string
Email string
}
var db *gorm.DB
// 初始化数据库
func initDB() {
dsn := "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
var err error
db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatalf("failed to connect database: %v", err)
}
// 自动迁移
db.AutoMigrate(&User{})
}
func main() {
r := gin.Default()
initDB()
// 创建用户
r.POST("/users", func(c *gin.Context) {
var user User
if err := c.ShouldBindJSON(&user); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
result := db.Create(&user)
if result.Error != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": result.Error.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"id": user.ID})
})
// 获取用户
r.GET("/users/:id", func(c *gin.Context) {
var user User
result := db.First(&user, c.Param("id"))
if result.Error != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "User not found"})
return
}
c.JSON(http.StatusOK, user)
})
// 更新用户
r.PUT("/users/:id", func(c *gin.Context) {
var user User
if err := db.First(&user, c.Param("id")).Error; err != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "User not found"})
return
}
var updatedUser User
if err := c.ShouldBindJSON(&updatedUser); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
result := db.Model(&user).Updates(updatedUser)
if result.Error != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": result.Error.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"id": user.ID})
})
// 删除用户
r.DELETE("/users/:id", func(c *gin.Context) {
var user User
if err := db.First(&user, c.Param("id")).Error; err != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "User not found"})
return
}
result := db.Delete(&user)
if result.Error != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": result.Error.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"id": c.Param("id")})
})
r.Run(":8080")
}

在这个程序中,我们首先定义了一个 User 模型,它有两个字段:Name 和 Email。然后,我们初始化了一个 MySQL 数据库连接,并自动迁移了 User 模型。

接下来,我们设置了四个路由来处理创建、获取、更新和删除用户的请求。每个路由都使用 Gin 的 ShouldBindJSON 方法来解析 JSON 请求体,并使用 GORM 的方法来操作数据库。

最后,我们运行了 Gin 服务器,它监听在 :8080 端口上。

要运行这个程序,你需要确保你的 MySQL 数据库已经运行,并且你已经在数据库中创建了相应的用户和密码,以及一个名为 dbname的数据库。然后,你可以使用 go run main.go 命令来运行程序,并通过 HTTP 请求来管理用户数据。

你可能感兴趣的:(Go,iphone,ios)