从0-1创建一个关于gin简易图书馆管理系统

golang练习项目-图书管理系统 文章目录bookManager项目结构contrallerbook.gouser.godaomysqlmysql.gomiddlewareauth.gomodelbook.gouser.gouser_m2m_book.gorouterapi_router.goinit_routermain.go bookManager 项目结构 contraller目录存放相关业务的处理函数 dao目录存放数据库相关 middleware存放中间件 model存放模型 router存放路由 main.go项目入口 ├─ 阅读详情

## 使用gin , mysql

一、下载所需资源包

先进行golang环境配置

Goland 设置与配置_goland 配置-优快云博客

下载gin框架

cmd窗口执行命令

go get -u github.com/gin-gonic/gin

下载关于mysql的驱动

go get -u github.com/go-sql-driver/mysql

下载sqlx

go get -u github.com/jmoiron/sqlx

二、创建数据库连接池,并连接数据库


import (
	"fmt"

	_ "github.com/go-sql-driver/mysql"
	"github.com/jmoiron/sqlx"
)

// 数据库连接池
var db *sqlx.DB

func InitDB() (err error) {
	dsn := "用户名:密码@tcp(127.0.0.1:3306)/数据库名称"
	// 也可以使用MustConnect连接不成功就panic
	db, err = sqlx.Connect("mysql", dsn)
	if err != nil {
		fmt.Printf("connect DB failed, err:%v\n", err)
		return
	}
	db.SetMaxOpenConns(20)
	db.SetMaxIdleConns(10)
	return
}

SetMaxOpenConns :表示最大连接数
SetMaxIdleConns :最小连接数

三、封装数据库请求

## 使用查询语句后返回查询到的列表

type Book struct {
	Book_id       int
	Book_name     string
	Book_price    int
	Book_author   string
	Book_presence string
}

// 查询所有数据
func SelectAllGet() (bookList []Book, err error) {
	if db == nil {
		panic("数据库连接尚未初始化")
	}
	var books []Book
	var users Book
	// sql语句
	sqlStr := "select * from book"

	err = db.Select(&books, sqlStr)

	if err != nil {
		return
	}
	return books, err

}

## 上述代码与数据库连接池再同一文件下

四、在main函数中设置gin

import (
	"fmt"
	httpsql "project/ginBook/http"

	"github.com/gin-contrib/cors"
	"github.com/gin-gonic/gin"
)

func main() {

	//程序启动连接数据库
	err := httpsql.InitDB()
	//初始化
	if err != nil {
		fmt.Printf("初始化连接失败 err=%v\n", err)
		return
	}
	// 创建路由
	r := gin.Default()

	// 设置请求头
	setHeaders := func(c *gin.Context) {
		c.Request.Header.Set("Access-Control-Allow-Origin", "*")
		c.Request.Header.Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, token, Accept")
		// 可以在这里添加其他请求头的设置
	}

	// 将自定义中间件应用到路由上
	r.Use(setHeaders)

	// 使用CORS中间件
	r.Use(cors.Default())

	// //各个路由
	r.GET("/book/list", booklListHandle) //查询书籍
	r.Run(":8080")

}

## 引入数据库文件,并且使用 InitDB()方法,初始化数据库。

## 使用setHeaders 设置请求头为*  全部都能通过

func booklListHandle(c *gin.Context) {
	// 查询书籍操作
	bookList, err := httpsql.SelectAllGet()
	if err != nil {
		c.JSON(500, gin.H{
			"code":    500,
			"message": err,
		})
	}
	c.JSON(200, gin.H{
		"code":    200,
		"message": bookList,
	})
}

## 使用gin框架的(c *gin.Context)进行接收参数和返回数据

五、启动程序

在终端输入   go run main.go     

就可以在浏览器进行访问http://localhost:8080/book/list   就可测试获取数据是否成功

使用Gin框架构建Go Web API并通过前端与其交互 我们将使用Gin框架构建一个简单的图书管理系统,并通过一个基本的前端页面与API进行交互。我们将详细介绍项目结构、代码实现以及如何解决常见问题。 阅读详情

相关推荐

YOLO26算法固态硬盘识别+训练好的模型+118张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[SSD 2280(SSD 2280)] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 75 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9014** mAP50-95 | 0.8244 Precision | 0.8682 Recall | 0.8599 train/box_loss | 0.4835 train/cls_loss | 0.8981 val/box_loss | 0.4427 val/cls_loss | 1.3311 【训练过程分析】 训练初始,我在日志里看到 loss 曲线迅速下滑,心情挺放松的。前 20 轮,训练 loss 从初始值 1.5 左右直线下探到 0.5,此时 mAP50 预期从 0.7 提升到 0.85,但实际仅爬升至 0.80,显示模型在快速学习基本特征。从第 21 轮到 50 轮,mAP50 从 0.80 稳步增长到 0.88,但曲线却开始进入平台期,loss 下降缓慢,从 0.5 压缩到 0.45。到了第 75 轮,mAP50 依旧徘徊在 0.88 水平,训练 loss 降至 0.4835,但 val_loss 仅略有降低,稳定在 0.44。这种状况表明模型在后期出现了轻微的资源浪费,未充分挖掘数据中的细节信息。从第 51 轮到第 75 轮,训练曲线显得十分枯燥,仿佛模型进入了一种“稳定但缓慢”的训... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

Gin框架如何使用并搭建一个后台管理系统(一)

通过gin框架,搭建一个后台管理项目,需要哪些准备;也简单表达了一下,对应项目结构图,创建了相对应的文件夹和文件存放位置。

A_LWIEUI_Learn的博客 1096

政府科技管理者在推动科技成果转化过程中,如何解决科研成果与市场需求脱节的问题?.docx

政府科技管理者在推动科技成果转化过程中,如何解决科研成果与市场需求脱节的问题?

挑灯夜读——Go语言:gin框架实现的纯后端应用

安装运行要求运行结构介绍目录介绍总结conf设置环境配置的文件夹——其中只有一个文件app.inidocs文档文件夹——包括sql的初始化语句和swagger的配置文件json和yamlmiddleware中间件——这里只有一个jwt的文件,该文件为安全认证系统,主要是验证token,确保我们的系统安全。models模型文件夹——其中包含了所有表的对应文件,并且一个表对应一个文件,每个文件中又有如增删改查等操作pkg。...

qq_45746068的博客 896

科技中介服务机构如何实现技术需求的智能挖掘与精准推送?.docx

科技中介服务机构如何实现技术需求的智能挖掘与精准推送?

隔离型全桥LLC谐振变化器建模及参数设计资料【仿真+设计报告+计算书】

内容概要:本文档系统性地提供了隔离型全桥LLC谐振变换器的建模与参数设计全套资料,涵盖Simulink、Plecs和PSIM等多种主流仿真平台的实现模型,配套完整的闭环控制设计报告与Mathcad计算书。内容深入聚焦LLC谐振变换器的核心技术环节,包括软开关实现机制、变频与移相混合控制策略、闭环稳定性分析、谐振参数优化设计及软启动过程建模等关键方面。资料不仅包含典型拓扑结构的仿真验证,还整合了多相交错、双向CLLC、恒压恒流双闭环等进阶控制方案,辅以详细的数学推导与工程设计流程,全面支撑从理论分析到实际电源系统开发的全过程。; 适合人群:面向具备电力电子、自动化或电气工程等相关专业背景,从事开关电源、新能源变换系统、高效率DC-DC转换器研发的工程师、高校研究生及科研人员。; 使用场景及目标:① 深入掌握全桥LLC谐振变换器的工作原理与精确建模方法;② 学习并实践基于多平台的闭环控制系统仿真与动态性能优化;③ 借助Mathcad计算书完成实际工程中谐振腔参数、磁性元件与开关频率的系统化设计;④ 支持高水平科研论文撰写、学位课题研究或工业级电源产品的开发与验证。; 阅读建议:建议结合仿真模型、设计报告与计算书三位一体同步研习,重点剖析控制策略的实现逻辑与参数敏感性分析,动手运行并修改仿真文件以深入理解系统动态响应,同时可参照文档中丰富的电力电子拓扑案例进行横向对比与技术拓展。

使用 Go+Vue 实现简单的图书管理系统干货记录(一)

go+vue 实现简单的图书管理系统干货记录(一)

poxiaosls的博客 764

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink平台构建的全桥LLC谐振变换器闭环仿真模型,采用变频与移相混合控制策略,实现高效电能转换与系统稳定运行。该模型涵盖主电路建模、闭环控制环路设计、关键参数整定及动态响应分析等核心环节,重点突出通过闭环反馈机制提升输出精度、负载适应能力与系统鲁棒性。同时,模型充分体现了软开关技术(如零电压开关ZVS)的实现原理,有效降低开关损耗,提高电源效率。配套提供的参数设计报告与仿真文件有助于深入理解LLC谐振变换器的工作机理及其在实际工程中的设计流程与优化方法。; 适合人群:适用于电力电子、电气工程及其自动化等相关领域的高校本科生、研究生,以及从事高频开关电源、新能源变换器研发的工程技术人员,具备电路理论基础和Simulink仿真经验者更佳。; 使用场景及目标:①掌握全桥LLC谐振变换器的建模与闭环仿真方法;②深入理解变频控制与移相控制相结合的混合调制策略在高效率电源中的应用优势;③用于科研项目、学位论文或毕业设计中的高性能DC-DC变换器研究;④作为教学案例展示高频软开关电源的动态特性与闭环控制实现方式; 阅读建议:建议结合所提供的设计报告与仿真模型同步操作,逐步调整控制器参数(如PI参数、频率范围、移相角等),观察系统在不同负载与输入条件下的动态响应,从而深化对谐振频率调节、软开关实现条件、闭环稳定性判据等关键技术要点的理解。

Go语言实战案例:用Gin实现图书管理接口

• 使用 Gin 可以非常轻松地构建 RESTful API• 路由映射到不同的处理函数• JSON 参数解析只需• 后续可以把books切片替换为数据库(MySQL、PostgreSQL、MongoDB等)

tenkofx的博客 508

基于变频控制的多相交错LLC谐振变换器闭环仿真(Simulink仿真实现)

内容概要:本文围绕“Plecs全桥LLC谐振变换器仿真模型”展开,系统介绍了基于Simulink和MATLAB平台实现的电力电子系统建模仿真资源,重点聚焦于隔离型全桥LLC谐振变换器的闭环控制设计与多相交错并联技术。文档详细涵盖了变频控制、软启动、双向充放电、多相交错并联等多种应用场景,并提供了从开环到闭环的完整控制系统设计方案,尤其强调LLC谐振变换器在新能源、储能、电动汽车等领域的高频DC-DC变换应用。此外,还整合了智能优化算法、机器学习、信号处理、电力系统管理等多个前沿科研方向的技术支持内容,形成综合性仿真资源库,助力科研人员高效开展创新研究。; 适合人群:具备电力电子、自动控制或电气工程等相关专业背景,从事高频变换器设计、新能源系统开发或电力电子仿真的高校研究生及科研人员。; 使用场景及目标:①用于LLC谐振变换器的科研仿真与教学演示;②为电力电子系统设计提供闭环控制策略参考;③辅助开展新能源、储能、电动汽车等领域中高频DC-DC变换器的开发与优化工作;④支撑智能优化、机器学习、路径规划等跨学科科研项目的仿真验证。; 阅读建议:建议结合文中提供的仿真链接与代码资源进行实践操作,优先按照目录结构系统学习核心案例,重点关注LLC变换器的建模方法与控制策略实现细节,同时可拓展参考其他相关技术领域的仿真模型以增强综合应用能力。

深入解析Buck开关电源中的死区时间设计及其对系统性能的影响

本文深入解析了Buck开关电源中死区时间的设计原理及其对系统性能的关键影响。死区时间通过防止上下管同时导通来避免穿通电流,确保系统安全。文章详细探讨了其工作机制、设置时的效率与安全权衡,以及不当设置对效率、稳定性和EMI的连锁反应,并提供了基于实测的调试方法与实战案例。

Apple的专栏 1130

从想法到代码:开发者如何系统提升技术转化与工程落地能力

1. 从“想法”到“落地”:开发者面临的核心挑战 在技术领域,我们每天都会产生无数想法:一个优化算法、一个新颖的架构设计、一个解决特定痛点的工具。然而,从脑海中灵光一现的“Idea”,到最终成为一个稳定运行、产生价值的软件系统,这中间存在着一条巨大的鸿沟。许多开发者,尤其是初学者,常常陷入“眼高手低”的困境——能侃侃而谈各种前沿概念,却无法独立完成一个可用的登录模块。这种将抽象概念转化为具体、可执行、可维护代码的能力,正是“Idea落地”的核心,也是区分普通代码编写者与资深工程师的关键壁垒。 本文将从一个开

wentao365的专栏 376

FPGA高速接口Aurora8B/10B协议实战:从IP核配置到数据流优化

本文详细介绍了FPGA高速接口Aurora8B/10B协议的实战应用,从IP核配置到数据流优化的全流程。通过Aurora8B/10B协议,开发者可以在FPGA间实现高效的数据传输,适用于高速接口设计。文章涵盖了协议基础、IP核配置、AXI4-Stream接口实战技巧以及性能优化策略,帮助读者快速掌握这一关键技术。

weixin_29280657的博客 268

Go语言Gin框架中使用MySQL数据库的三种方式

在Gin框架中使用MySQL的最简单的方式就是直接处理SQL语句;xorm是一个Go语言的ORM库,通过它可以很方便的操作数据库。它的设计重点是高性能和易用性。XORM支持多种数据库,包括MySQL、PostgreSQL、SQLite、Oracle和SQL Server,并提供了丰富的查询语言。XORM还支持事务和缓存机制,可以提高数据库操作的性能。

码农兴哥的技术笔记 1634

红外气体检测方案解析:从NDIR原理到物联网终端设计实践

气体检测是工业安全与环境监测的核心需求,其技术原理主要基于气体分子对特定物理或化学信号的响应。非色散红外(NDIR)技术作为一种物理检测方法,通过测量气体分子对特定波长红外光的吸收来定量浓度,因其不依赖化学反应,具备寿命长、抗干扰强和响应快等优势。在工程实践中,红外气体检测方案的价值在于为物联网终端设备提供了高可靠、低功耗的感知能力,广泛应用于工业过程监控、环境空气质量监测以及智能家居安全预警等场景。本文以一套集成了Microchip MCU、Axetris红外光源和Pyreos热释电传感器的参考设计为例,

weixin_30954817的博客 394

黑猫带你学eMMC协议第2篇:eMMC部分相关名词释义

1 前言 1.1 声明 本文依据eMMC JEDEC5.1、网络资料及个人工作经验整理而成,如有错误请留言。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 本文背景 本文关键词不包括emmc jedec5.1协议第3章节:《Terms and definitions》内容。关于emmc协议层的关键词,直接查阅spec相关章节即可,清晰明了,此处没必要再列出。 本文为本人工作学习中常听到或常用到关乎于emmc/flash的一些关键词合集,没有固定分类,不需要强行记忆,供查询使用。 1.

黑猫奥利奥的博客 7441

vue+go-gin+nginx实现后台管理系统

前后端分离的经典后台管理系统。 主要用到的技术和组件: 前端:vuejs,组件element ui、ant vue、axios 后端:golang,框架go-gin,swagger组件 服务代理:nginx 过程中的疑难问题和关键点记录: 一、nginx反向代理: mac下修改/usr/local/etc/nginx/nginx.conf.default文件:修改后需要重启ng...

hahachenchen789的博客 5062

蓝牙功耗优化实战:连接蓝牙耳机时高耗电问题的深度排查与解决

连接任意一款蓝牙耳机, 进行插入实网SIM卡, 同时连接蓝牙耳机后, 进入IDLE模式, 测试时间为10分钟的测试结果, 平均电流毫安在8左右. 测试结果1: 平均电流 8.84mA 测试结果2: 平均电流 7.39mA 厘清问题: 由于出现上两幅图中 绿色线圈中的 20mA 左右高耗电时段, 从而将整体的平均电流抬高. 于是在记录IDLE下电流出现绿色线圈中的 20mA 左右高耗电时段, 同时录制UART1 Catcher log. Filter: MOD_BT/MOD_ATC.

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 1001

开源智能体模型 SwimmingIndividuals 可模拟海洋生态与渔业捕捞

研究团队发布开源智能体模型 SwimmingIndividuals,采用 Julia 与 CPU/GPU 混合架构模拟海洋生态动态和渔业捕捞,并在美国墨西哥湾的模拟中复现了垂直迁移、鲸类下潜及王鲭生长曲线。

老孙正经胡说 410

数据分析案例-2024年裁员数据集可视化分析

本实验数据集来源于Kaggle,原始数据集为2020-2024年裁员数据,共有3577条,12个变量,该数据集提供了不同公司的裁员信息。它包括以下几栏:Company:裁员发生的公司名称。Location_HQ:公司总部位置。Industry:公司所属的行业或部门。Laid_Off_Count:公司解雇的员工数量。Percentage:公司员工被解雇的百分比。Date:裁员发生的日期。Source:信息来源网址。Funds_Raised:公司募集资金的信息。

m0_64336780的博客 1万+

Oracle EBS FA 创建成批增加执行时间长且报错

摘要 Oracle EBS系统在执行"创建成批增"请求时出现长时间运行并报错(ORA-00603和ORA-03114)。

陈显平的专栏-Oracle EBS 174

4-1 PostgreSQL 索引体系总览:B-tree|GIN|GiST|BRIN|SP-GIST

很多新手拿到 PG 就无脑加 B-tree,遇到 JSONB、空间、时序数据直接踩坑。PG 不是只有 B-tree,5 种主流索引各司其职,**没有万能索引,匹配查询模式才是核心**。本文带你看懂每一类索引的原理、适用场景、优缺点、SQL 示例,最后重点讲清楚:索引不是越多越好。

zhangjw34的专栏 376

解决Office 365 SMTP问题:C#邮件发送详解

本文介绍了如何在C#中使用Office 365 SMTP服务发送邮件。重点讲解了正确配置SMTP客户端的关键参数:必须使用587端口并启用TLS加密(EnableSsl=true),同时通过NetworkCredential进行身份验证。虽然SmtpClient已不推荐用于新项目,但本文提供的代码示例仍适用于临时项目或系统维护,并建议未来可考虑使用MailKit等现代邮件库。文章还包含了错误处理机制,确保程序健壮性。

2501_90323865的博客 141

Gin 与 GORM 列表查询实战:读懂 ShiyuAdmin 的筛选、分页和排序

本文以 ShiyuAdmin 项目为例,详解 Gin 与 GORM 实现列表查询的三大核心:筛选条件构建(视图、关键词、状态)、安全 LIKE 模糊匹配(转义特殊字符)、分页与确定性排序(created_at DESC, id DESC)。强调 Count 与 Find 使用相同条件保证总数准确,通过主键打破时间并列,确保翻页顺序稳定。同时指出偏移分页受数据变动影响,排序不可动态配置。代码实现兼顾安全性与可维护性,为后台列表功能提供可靠范式。

JavaPub 252

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Gin 中间件机制详解:从洋葱模型到 JWT 身份认证

深入解析 Gin 中间件的定义、执行流程及底层原理,重点讲解 c.Next()、c.Abort()、HandlerChain 和 Context 索引机制,并结合 JWT 身份认证实战,理解中间件在 Go 后端工程化开发中的应用。

2402_88969947的博客 276

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

下一篇: ios微信扫描二维码询问是否前往APP Store!
link_two
博客等级 码龄6年 62粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值