DB ============== package DB import ( Model "GoGinmod/GOginzuoY/model" "fmt" _ "github.com/go-sql-driver/mysql" "github.com/jmoiron/sqlx" ) var db *sqlx.DB func InitDB() (err error) { addr := "root:123456@tcp(127.0.0.1:3306)/aaa?charset=utf8mb4&parseTime=True" db, err = sqlx.Connect("mysql", addr) if err != nil { fmt.Println("初始化错误") return err } // 最大连接 db.SetMaxOpenConns(100) // 最大空咸 db.SetMaxIdleConns(16) return } func QuerAllBook() (bookList []*Model.Books, err error) { sqlStr := "SELECT * FROM `book`" err = db.Select(&bookList, sqlStr) if err != nil { fmt.Println("查询错误", err) return nil, err } return } func InsertBook(title string, price int) (err error) { sqlStr := "INSERT INTO `aaa`.`book` (`tetle`, `price`) VALUES (?, ?)" _, err = db.Exec(sqlStr, title, price) if err != nil { return err } return } func DeleteBook(id int) (err error) { sqlStr := "DELETE FROM `aaa`.`book` WHERE `ID` = ?" _, err = db.Exec(sqlStr, id) if err != nil { return err } return } =================Model package Model type Books struct { Id int `db:"id"` Title string `db:"tetle"` Price int `db:"price"` } ===============main package main import ( "GoGinmod/GOginzuoY/DB" "fmt" "github.com/gin-gonic/gin" "net/http" "strconv" ) func main() { err := DB.InitDB() if err != nil { fmt.Println("错说") panic(err) } r := gin.Default() // 加载界面 r.LoadHTMLGlob("GOginzuoY/templates/*") //查询所有 r.GET("/book", bookList) // 新增跳转界面 r.GET("/bookAddJm", AddJm) //新增数据提交接口 r.POST("/book/AddBook", AddBook) //删除接口 r.GET("/book/delete", DleBook) r.Run(":8000") } func bookList(c *gin.Context) { book, err := DB.QuerAllBook() if err != nil { c.JSON(200, gin.H{"book": "查询错误"}) return } c.HTML(200, "book_list.html", gin.H{ "code": 0, "data": book, }) } func AddJm(c *gin.Context) { // 要先进行界面渲染 c.HTML(200, "bookAdd.html", "") } func AddBook(c *gin.Context) { // 获取form表单的值 title, _ := c.GetPostForm("title") price, _ := c.GetPostForm("price") //转类型 prices, _ := strconv.Atoi(price) fmt.Println(title) err := DB.InsertBook(title, prices) if err != nil { return } c.Redirect(http.StatusMovedPermanently, "/book") } func DleBook(c *gin.Context) { // 获取 URL的值 Ids := c.Query("id") // 转成Int类型 Id, _ := strconv.Atoi(Ids) fmt.Println(Id) err := DB.DeleteBook(Id) if err != nil { return } // 重定向 c.Redirect(http.StatusMovedPermanently, "/book") } =================接下来是两个前端界面 {{define "book_list.html"}} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div><a href="/bookAddJm">新增</a></div> <table border="1px"> <thead> <tr> <th>ID</th> <th>title</th> <th>price</th> <th>操作</th> </tr> </thead> <tbody> {{ range .data }} <tr> <td>{{ .Id }}</td> <td>{{ .Title }}</td> <td>{{ .Price }}</td> <td> <a href="/book/delete?id={{.Id}}">删除</a> </td> </tr> {{end}} </tbody> </table> </body> </html> {{end}} ========================== {{define "bookAdd.html"}} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/book/AddBook" method="post"> <input type="text" name="title"><br> <input type="text" name="price"> <input type="submit" value="提交"> </form> </body> </html> {{end}} =============这个简单的gin功能就好了
标签:return,err,db,book,func,增删,gin From: https://www.cnblogs.com/xiaobaixuecheng101/p/17334990.html