安裝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. DB func 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 : = 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