构建目录:
itil是app目录
db是链接数据库的连接方法库
routers目录是路由入口
routers/routers.go
package routers import ( "github.com/gin-gonic/gin" ) type Option func(*gin.Engine) var options = []Option{} // 注册app的路由配置 func Include(opts ...Option) { options = append(options, opts...) } // 初始化 func Init() *gin.Engine { r := gin.New() for _, opt := range options { opt(r) } r.Run(":31516") return r }
app(itil)路由
itil/routers.go
package itil import ( "github.com/gin-gonic/gin" ) func Routers(e *gin.Engine) { e.GET("/api/getHr", getHrData) e.GET("/api/getHrDetail", getHrDetail) e.POST("/api/editHr", EditHr) e.POST("/api/deleteHr", deleteHr) // e.GET("/comment", commentHandler) }
itil/hr.go (路由处理方法)
package itil import ( "fmt" "net/http" "testGin/db" "github.com/gin-gonic/gin" // "github.com/jinzhu/gorm" // _ "github.com/jinzhu/gorm/dialects/mysql" ) type TridentHrManage struct { ID int Um string Username string } func getHrData(c *gin.Context) { var users []TridentHrManage var db = db.DbObj() if db == nil { fmt.Println("conn db err: ") c.JSON(http.StatusOK, gin.H{ "message": "Hello www.topgoer.com", "status": 0, "error": "conn err", }) } else { db.Find(&users) defer db.Close() c.JSON(http.StatusOK, gin.H{ "message": "success", "status": 1, "error": "", "data": users, }) } // c.JSON(http.StatusOK, gin.H{ // "message": "Hello www.topgoer.com", // }) } func getHrDetail(c *gin.Context) { id := c.Query("id") fmt.Println(c) var users []TridentHrManage var db = db.DbObj() if db == nil { fmt.Println("conn db err: ") c.JSON(http.StatusOK, gin.H{ "message": "Hello www.topgoer.com", "status": 0, "error": "conn err", }) } else { db.Where("ID = ?", id).First(&users) defer db.Close() c.JSON(http.StatusOK, gin.H{ "message": "success", "status": 1, "error": "", "data": users, }) } } func EditHr(c *gin.Context) { // var id int var js TridentHrManage var id int var um string var username string if c.ShouldBindJSON(&js) == nil { if js.Um != "" && js.Username != "" { id = js.ID um = js.Um username = js.Username } else { c.JSON(http.StatusOK, gin.H{ "message": "不能为空", "status": 0, "error": "不能为空", }) } } else { c.JSON(http.StatusOK, gin.H{ "message": "不能为空", "status": 0, "error": "不能解释json格式", }) } // data, _ := ioutil.ReadAll(c.Request.Body) // fmt.Printf("ctx.Request.body: %v", string(data)) // id := c.Query("id") // um := c.Query("um") // username := c.Query("username") // fmt.Println(c) // fmt.Println("fffff") // fmt.Println(um) // fmt.Println(data) // // fmt.Println(c.Request.Body.GET("um")) // fmt.Printf("%T", string(data)) // json.Unmarshal([]byte(str), &data) var users []TridentHrManage var db = db.DbObj() defer db.Close() if db == nil { fmt.Println("conn db err: ") c.JSON(http.StatusOK, gin.H{ "message": "Hello www.topgoer.com", "status": 0, "error": "conn err", }) } else { // fmt.Println(id) // fmt.Printf("%T", id) if id == 0 { user := &TridentHrManage{Um: um, Username: username} db.Create(user) // defer db.Close() fmt.Println(user.ID) c.JSON(http.StatusOK, gin.H{ "message": user.ID, "status": 1, "error": "", "data": "add", }) } else { fmt.Print("update..") db.Where("id = ?", id).First(&users).Update("um", um).Update("username", username) // fmt.Println(&users) // db.Model(&users[0]).Update("um", um) // db.Model(&users[0]).Update("username", username) // defer db.Close() c.JSON(http.StatusOK, gin.H{ "message": "success", "status": 1, "error": "", "data": "update", }) } } } func deleteHr(c *gin.Context) { // var id int var js TridentHrManage var id int if c.BindJSON(&js) == nil { if js.ID > 0 { id = js.ID } else { c.JSON(http.StatusOK, gin.H{ "message": "不能为空", "status": 0, "error": "不能为空或0", }) } } else { c.JSON(http.StatusOK, gin.H{ "message": "不能为空", "status": 0, "error": "不能解释json格式", }) } var db = db.DbObj() defer db.Close() if db == nil { fmt.Println("conn db err: ") c.JSON(http.StatusOK, gin.H{ "message": "Hello www.topgoer.com", "status": 0, "error": "conn err", }) } else { user := &TridentHrManage{ID: id} db.Delete(user) // fmt.Println(&users) // db.Model(&users[0]).Update("um", um) // db.Model(&users[0]).Update("username", username) // defer db.Close() mess := "delete id:" + string(id) + " success" c.JSON(http.StatusOK, gin.H{ "message": "success", "status": 1, "error": "", "data": mess, }) } }
数据库连接使用gorm:
db/dbUtil.go
package db import ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) func DbObj() *gorm.DB { // var db *gorm.DB db, err := gorm.Open("mysql", "root:my-iflow-123@tcp(10.25.173.36:32704)/test1?charset=utf8&parseTime=True&loc=Local") if err != nil { fmt.Println(err) defer db.Close() return db } else { fmt.Println("connection succedssed") db.SingularTable(true) // var users []TridentHrManage // db.Find(&users) // fmt.Println(users) // user := new(TridentHrManage) } // defer db.Close() return db }
main.go
package main import ( "fmt" "testGin/itil" "testGin/routers" ) func main() { // 加载多个APP的路由配置 routers.Include(itil.Routers) // 初始化路由 r := routers.Init() if err := r.Run(); err != nil { fmt.Println("startup service failed, err:%v ", err) } }