gin的增删查

发布时间 2023-04-19 22:56:46作者: 小白学程
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功能就好了