Go语言Gin框架+Gorm实战CRUD
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
// 定义用户模型
type User struct {
gorm.Model
Name string
Age int
}
// 初始化数据库
func initDB() (*gorm.DB, error) {
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
return nil, err
}
// 自动迁移数据库表
db.AutoMigrate(&User{})
return db, nil
}
// 创建用户
func createUser(c *gin.Context) {
var json User
if c.BindJSON(&json) == nil {
db.Create(&json)
c.JSON(200, json)
} else {
c.JSON(422, "Invalid json")
}
}
// 获取所有用户
func getAllUsers(c *gin.Context) {
var users []User
db.Find(&users)
c.JSON(200, users)
}
// 更新用户信息
func updateUser(c *gin.Context) {
var user User
if db.Where("id = ?", c.Param("id")).First(&user).Error != nil {
c.JSON(404, "User not found")
return
}
if c.BindJSON(&user) == nil {
db.Save(&user)
c.JSON(200, user)
} else {
c.JSON(422, "Invalid json")
}
}
// 删除用户
func deleteUser(c *gin.Context) {
var user User
if db.Where("id = ?", c.Param("id")).Delete(&user).Error != nil {
c.JSON(404, "User not found")
return
}
c.JSON(200, "User deleted")
}
var db *gorm.DB
func main() {
var err error
db, err = initDB()
if err != nil {
panic(err)
}
defer db.Close()
router := gin.Default()
// 创建用户
router.POST("/users/new", createUser)
// 获取所有用户
router.GET("/users", getAllUsers)
// 更新用户信息
router.PUT("/users/:id", updateUser)
// 删除用户
router.DELETE("/users/:id", deleteUser)
fmt.Println("Running on localhost:8080")
router.Run("localhost:8080")
}
这段代码实现了一个简单的RESTful API,使用Gin框架和Gorm库来处理HTTP请求和数据库操作。代码中包含了创建用户、获取所有用户、更新用户信息和删除用户的基本操作,并且演示了如何使用Gorm的自动迁移功能来创建或更新数据库表。
评论已关闭