安装gin
go get -u github.com/gin-gonic/gin
go get -u github.com/go-sql-driver/mysql
创建相关目录
gotest->conifg->database.go->redis.go->controller ->index.go->model->user.go->router->router.gomain.go

创建用户模型
package model
import ("gotest/config"
)
type User struct {ID int `json:"id"`Name string `json:"name"`Age int `json:"age"`
}func GetUsers() ([]User, error) {var users []User rows, err :=config.DB.Query("SELECT id, name, age FROM users")if err != nil {return nil, err}defer rows.Close()for rows.Next() {var user Userif err := rows.Scan(&user.ID, &user.Name, &user.Age); err != nil {return nil, err}users = append(users, user)}return users, nil
}
func InsertUser(user *User) (int, error) {result, err := config.DB.Exec("INSERT INTO users(name, age) VALUES(?,?)", user.Name, user.Age)if err != nil {return 0, err}id,err := result.LastInsertId() if err != nil {return 0, err}return int(id),nil
}
func UpdateUser(user *User) (int, error) {result, err := config.DB.Exec("UPDATE users SET name=?, age=? WHERE id=?", user.Name, user.Age, user.ID)if err != nil {return 0, err}rowsAffected, err := result.RowsAffected() if rowsAffected == 0 {return 0, err}return int(rowsAffected),nil
}
func DeleteUser(id int) (int, error) {result, err := config.DB.Exec("DELETE FROM users WHERE id=?", id)if err != nil {return 0, err}rowsAffected, err := result.RowsAffected() if rowsAffected == 0 {return 0, err}return int(rowsAffected),nil
}
封装mysql连接
package configimport ("database/sql""log"_ "github.com/go-sql-driver/mysql"
)var DB *sql.DBfunc InitDB() {var err errordsn := "root:root@tcp(localhost:3306)/test?charset=utf8mb4&parseTime=True&loc=Local" DB, err = sql.Open("mysql", dsn)if err != nil {log.Fatalf("Error opening database: %v", err)}err = DB.Ping()if err != nil {log.Fatalf("Error pinging database: %v", err)}log.Println("Connected to database")
}
main.go
package main
import ("gotest/router""gotest/config"
)
func main() {config.InitDB() r := router.SetupRouter() r.Run(":8080")
}
调用DB
package controllerimport ("github.com/gin-gonic/gin""gotest/config""gotest/model"
)
func UserHandler(c *gin.Context){list,err :=model.GetUsers();if err != nil {c.JSON(500,gin.H{"message": "Error","data":err.Error(),})}c.JSON(200,gin.H{"message": "User List","data":list,})
}
func UserInsertHandler(c *gin.Context) {name := "adsdklss"age := 18user := &model.User{ Name: name,Age: age,}id, err := model.InsertUser(user)if err != nil {c.JSON(500, gin.H{"message": "Error","data": err.Error(),})}c.JSON(200, gin.H{"message": "Insert success","data": id,})
}func UserUpdateHandler(c *gin.Context) {name := "修改名字"age := 18user := &model.User{ Name: name,Age: age,ID: 1,}id, err := model.UpdateUser(user)if err != nil {c.JSON(500, gin.H{"message": "Error","data": err.Error(),})}c.JSON(200, gin.H{"message": "Update success","data": id,})
}func UserDelHandler(c *gin.Context) {uid :=1;id, err := model.DeleteUser(uid)if err != nil {c.JSON(500, gin.H{"message": "Error","data": err.Error(),})}c.JSON(200, gin.H{"message": "del success","data": id,})
}
启动服务
go run main.go