项目目录
main.go
package main
import (
"go-project/route"
)
func main() {
r := route.Router()
r.Run(":8080")
}
router.go
package route
import (
"go-project/database"
"github.com/gin-gonic/gin"
)
/*2.路由函数*/
func Router() *gin.Engine {
//连接数据库,返回连接对象
//启动路由
r := gin.Default()
//路由分组
user := r.Group("/user")
{
//插入数据
user.POST("/insert", database.Insert)
//返回json测试数据
user.GET("/hello", func(c *gin.Context) {
// c.JSON:返回JSON格式的数据
c.JSON(200, gin.H{
"message": "nihao,feng",
})
})
}
return r
}
curd.go
package database
import (
"fmt"
"github.com/gin-gonic/gin"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type Message struct {
gorm.Model
Title string `json:"title"`
Content string `json:"content"`
}
// 定义全局的数据库连接变量
var db *gorm.DB
/*init数据库连接函数*/
func init() {
var err error
dsn := "root:root@tcp(127.0.0.1:3306)/ceshi?charset=utf8mb4&parseTime=True&loc=Local"
db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("数据库连接失败")
}
// 自动化程序:创建和修改表
//db.AutoMigrate(&Message{})
}
/*插入操作*/
func Insert(c *gin.Context) {
var data Message
err := c.ShouldBindJSON(&data)
if err != nil {
c.JSON(200, gin.H{
"error": err.Error(),
})
return
}
c.JSON(200, gin.H{
"json": data,
})
result := db.Create(&data)
if result.Error != nil {
fmt.Println("插入失败:", result.Error)
return
}
fmt.Printf("插入成功,用户 ID: %d\n", data.ID)
}
注意事项:
- 正确创建包和导入包
- 理解 := 和 = 的区别,掌握如何给db全局变量赋值
- 掌握init函数的用法,可以在程序的任意一个包中使用