安装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.go
main.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 User
if 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 config
import (
"database/sql"
"log"
_ "github.com/go-sql-driver/mysql"
)
var DB *sql.DB
func InitDB() {
var err error
dsn := "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 controller
import (
"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 := 18
user := &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 := 18
user := &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