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功能就好了