首页 > 其他分享 >gin的增删查

gin的增删查

时间:2023-04-19 23:16:02浏览次数:27  
标签:return err db book func 增删 gin

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

相关文章

  • 道德与社会问题简报 #3: Hugging Face 上的道德开放性
    ......
  • vue项目部署后 nginx配置重定向 大文件报错问题
      删除Nginx缓存文件试试?#rm-rf/usr/local/nginx/proxy_temp  注意proxy_busy_buffers_size是proxy_buffers的两倍,proxy_temp_file_write_size也要比proxy_buffers大。  ......
  • Plugin execution not covered by lifecycle configuration
    <build><pluginManagement><plugins><!--Thisplugin'sconfigurationisusedtostoreEclipsem2esettingsonly.IthasnoinfluenceontheMavenbuilditself.-->......
  • AtCoder Beginner Contest 298
    A-JobInterview#include<bits/stdc++.h>usingnamespacestd;intmain(){ intn; strings; cin>>n>>s; if(s.find("x")!=-1){ printf("No\n"); }elseif(s.find("o")==-1){ printf("No......
  • .Net 6.0 部署Linux+Nginx +PM2教程
    今天带大家将本地.Net6.0项目部署到Linux系统中,其中有用到Nginx反向代理和PM2进程管理工具,希望本偏文章能对你有所帮助,成为你成功路上的垫脚石!背景:在.Net5.0横空出世之后,.Net已经支持夸平台了,身为一名合格的码农,你敢说你不会用Linux?哈哈哈开个玩笑,因为工作最近......
  • DML(对表中的数据进行增删改)
    DML(对表中的数据进行增删改)添加(insert)给指定列添加数据它INSERTINTO表名(列名1,列名2,.….)VALUES(值1,值2,...);给全部列添加数据INSERTINTO表名VALUES(值1,值2.…);批量添加数据INSERTINTO表名(列名1,列名2.….)VALUES(值1,值2...),(值1,值2...),(值1,值2......
  • Debian Linux(帕拉迪)的方式:安装Linux并且部署主从nginx的步骤(自己实践过的)
    1. ./configure和make &&makeinstall分开执行,不要连起来,会报错。(其实可以不用&&,其实他们是可以分开执行的,分三步)&&是连接的意思, 2.linux安装nginx后没有sbin目录的解决方法 3.按照第二步修改后启动nginx报错的解决方法解决nginx启动报错nginx:[emerg]open(......
  • UnrealEngine - 网络同步之连接篇
    1连接过程-握手传统的C/S架构下,Client和Server通常会建立一条抽象的Connection,用来进行两端的通信。UE的官方文档中提供了Client连接到Server的示例,简单来说分为如下几步:打包构建好Client和Server进程启动Server进程,启动参数为./Binaries/Win64/<PROJE......
  • mysql增删改查
    1、增insertintotable_name()value();insertintotable_name()values(),(),();insertintotable_namevalue();增加数据,通过关键字insert进行如果是在一行中插入部分字段数据,必须在value之前声明插入字段,而value后的值按声明字段顺序排列。如果插入全部字段,可......
  • 【Database开发】国产数据库之涛思TDengine(命令测试)
    1、简介TDengine是一款开源、云原生的时序数据库,专为物联网、工业互联网、金融、IT运维监控等场景设计并优化。它能让大量设备、数据采集器每天产生的高达TB甚至PB级的数据得到高效实时的处理,对业务的运行状态进行实时的监测、预警,从大数据中挖掘出商业价值。TDengine......