当前位置: 首页 > news >正文

【golang学习笔记 gin 】1.1 路由封装和mysql 的使用封装

安装gin

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

创建相关目录

gotest->conifg->database.go->redis.go->controller ->index.go->model->user.go->router->router.gomain.go 

在这里插入图片描述

创建用户模型

package model
import ("gotest/config"
)
type User struct {ID   int    `json:"id"`Name string `json:"name"`Age  int    `json:"age"`
}func GetUsers() ([]User, error) {var users []User rows, err :=config.DB.Query("SELECT id, name, age FROM users")if err != nil {return nil, err}defer rows.Close()for rows.Next() {var user Userif err := rows.Scan(&user.ID, &user.Name, &user.Age); err != nil {return nil, err}users = append(users, user)}return users, nil
}
//插入
func InsertUser(user *User) (int, error) {result, err := config.DB.Exec("INSERT INTO users(name, age) VALUES(?,?)", user.Name, user.Age)if err != nil {return  0, err}id,err := result.LastInsertId() // 获取最后插入的IDif err != nil {return  0, err}return int(id),nil
}
//更新
func UpdateUser(user *User) (int, error) {result, err := config.DB.Exec("UPDATE users SET name=?, age=? WHERE id=?", user.Name, user.Age, user.ID)if err != nil {return  0, err}rowsAffected, err := result.RowsAffected() // 获取影响的行数if rowsAffected == 0 {return  0, err}return int(rowsAffected),nil
}
//删除
func DeleteUser(id int)  (int, error) {result, err := config.DB.Exec("DELETE FROM users WHERE id=?", id)if err != nil {return  0, err}rowsAffected, err := result.RowsAffected() // 获取影响的行数if rowsAffected == 0 {return  0, err}return int(rowsAffected),nil
}

封装mysql连接

package configimport ("database/sql""log"_ "github.com/go-sql-driver/mysql" // 导入MySQL驱动
)var DB *sql.DBfunc InitDB() {var err errordsn := "root:root@tcp(localhost:3306)/test?charset=utf8mb4&parseTime=True&loc=Local" // 替换为你的数据库信息DB, err = sql.Open("mysql", dsn)if err != nil {log.Fatalf("Error opening database: %v", err)}err = DB.Ping()if err != nil {log.Fatalf("Error pinging database: %v", err)}log.Println("Connected to database")
}

main.go

package main
import ("gotest/router""gotest/config"
)
func main() {config.InitDB() // 初始化数据库连接r := router.SetupRouter() // 使用路由设置函数来初始化路由和中间件等。r.Run(":8080")            // 监听并在 0.0.0.0:8080 上启动服务。默认情况下,Gin使用的是HTTP协议。如果你需要HTTPS,可以使用`r.RunTLS(":8080", "certfile", "keyfile")`。
}

调用DB

package controllerimport ("github.com/gin-gonic/gin""gotest/config""gotest/model"
)
//查列表
func UserHandler(c *gin.Context){list,err :=model.GetUsers();if err != nil {c.JSON(500,gin.H{"message": "Error","data":err.Error(),})}c.JSON(200,gin.H{"message": "User List","data":list,})
}
func UserInsertHandler(c *gin.Context) {name := "adsdklss"age := 18user := &model.User{	Name: name,Age:  age,}id, err := model.InsertUser(user)if err != nil {c.JSON(500, gin.H{"message": "Error","data": err.Error(),})}c.JSON(200, gin.H{"message": "Insert success","data": id,})
}func UserUpdateHandler(c *gin.Context) {name := "修改名字"age := 18user := &model.User{	Name: name,Age:  age,ID:   1,}id, err := model.UpdateUser(user)if err != nil {c.JSON(500, gin.H{"message": "Error","data": err.Error(),})}c.JSON(200, gin.H{"message": "Update success","data": id,})
}func UserDelHandler(c *gin.Context) {uid :=1;id, err := model.DeleteUser(uid)if err != nil {c.JSON(500, gin.H{"message": "Error","data": err.Error(),})}c.JSON(200, gin.H{"message": "del success","data": id,})
}

启动服务

   go run  main.go

文章转载自:

http://bINLW1V1.bntgy.cn
http://JoBEFzb6.bntgy.cn
http://TC0g47So.bntgy.cn
http://NaJyvYQl.bntgy.cn
http://CqOThypM.bntgy.cn
http://tRVgqiI4.bntgy.cn
http://mEYp2eDZ.bntgy.cn
http://qZEsbYQd.bntgy.cn
http://sV5tm57P.bntgy.cn
http://aJ6SY6gN.bntgy.cn
http://ckqtwEDu.bntgy.cn
http://ed2zFLdv.bntgy.cn
http://gDRfDGQW.bntgy.cn
http://gSDe2jmQ.bntgy.cn
http://hB8jO2uX.bntgy.cn
http://GnLfVxk6.bntgy.cn
http://PwCaDADn.bntgy.cn
http://lG8fJast.bntgy.cn
http://S7oj12tG.bntgy.cn
http://GKiFMsmz.bntgy.cn
http://eRE3DVVs.bntgy.cn
http://5aGTCFxj.bntgy.cn
http://aAKNIMpv.bntgy.cn
http://DvGbty4Y.bntgy.cn
http://oLKc2AEs.bntgy.cn
http://dffHlwAl.bntgy.cn
http://ADql13HC.bntgy.cn
http://sOuTPrD1.bntgy.cn
http://YaLSxKcj.bntgy.cn
http://us5aqmyT.bntgy.cn
http://www.dtcms.com/a/373661.html

相关文章:

  • django5个人笔记
  • Linux 进程信号之信号的保存
  • 详细讲解锥齿轮丝杆升降机的加工制造工艺
  • nginx配置前端请求转发到指定的后端ip
  • 【Linux】文件管理:压缩、归档与传输
  • 大数据各组件flume,datax,presto,DolphinScheduler,findBI在大数据数仓架构中的作用和功能。
  • 算法之常见八大排序
  • 某公共资源中心-sm2逆向
  • 数电实验二任务验证指南(开关操作与指示灯观察)
  • Redis Stream:轻量级消息队列深度解析
  • RAG-5-案例1
  • 点亮智慧城市:智能照明开关驱动器如何重塑路灯控制新纪元
  • 开发中使用——鸿蒙播放本地mp3文件
  • DLL修复是什么意思?为什么总会缺失?(详细教程)
  • 高强度应用下天硕工业级SSD固态硬盘真的更耐用吗?
  • c++基础学习(学习蓝桥杯 ros2有C基础可看)
  • SpringBoot学习日记 Day10:企业级博客系统开发实战(一)
  • 嵌入式学习---(硬件)
  • 写算法第二题(英语介词)dom对象
  • cn2an:中文数字与阿拉伯数字的智能转换工具
  • Hive和Flink数据倾斜问题
  • 嵌入式ARM架构学习2——汇编
  • 渗透测试全景解析:从基础概念到实战演练
  • 鸿蒙Next应用UI稳定性故障调试:从崩溃到流畅的实战指南
  • 企智汇施工工程项目管理系统:全生命周期信息化管理解决方案!施工企业管理系统!施工企业项目管理软件!工程项目管理系统!工程项目管理软件!
  • 遥感数据同化方法:集合卡尔曼滤波和变分同化算法
  • mac安装Java开发环境
  • Java网络初识(2):IP地址和端口号,协议,五元组
  • 什么是算法:高效解决问题的逻辑框架
  • EFCore与EF6:ORM技术深度解析