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

我开源了Go语言连接数据库和一键生成结构体的包【实用】

项目地址:https://gitee.com/zht639/my_gopkg

autosql

autosql 是一个简化数据库使用的模块,支持常见的数据库(MySQL、PostgreSQL、SQLite、SQL Server)。该模块不仅提供了数据库连接函数,还能自动生成数据表对应的结构体,极大简化了数据库的初始化操作。

一、使用方法
打开项目根目录,在该目录下打开命令行,然后按如下步骤操作。

(1)初始化mod(有则跳过此步)

go mod init 你的模块名

(2)下载包的最新版本(第一次下载可省略@master)

go get gitee.com/zht639/my_gopkg@master

(3)导包

import "gitee.com/zht639/my_gopkg/autosql"

二、功能概述

  • 连接函数:

    • ConnMysql(username, password, host, port, dbname string): 连接 MySQL 数据库。
    • ConnPostgres(username, password, host, port, dbname string): 连接 PostgreSQL 数据库。
    • ConnSQLite(filepath string): 连接 SQLite 数据库。
    • ConnSQLServer(username, password, host, port, dbname string): 连接 SQL Server 数据库。
  • 结构体生成:

    • GenStruct(db *gorm.DB, tableName string): 生成数据库中指定表的结构体。
    • GenAllStructs(db *gorm.DB): 生成数据库中所有表的结构体。

    使用生成结构体功能可以将数据库中的表映射为 Go 语言的结构体,极大地提高了开发效率和代码的可维护性。

三、使用示例

以mysql为例,连接数据库并生成表的结构体:

package mainimport ("fmt""gitee.com/zht639/my_gopkg/autosql"
)func main() {db, err := autosql.ConnMysql("root", "123456", "localhost", "3306", "db01")if err != nil {fmt.Println(err)return}// 生成数据库中所有表的结构体autosql.GenAllStructs(db)//或者生成指定表对应的结构体//autosql.GenStruct(db, "student")
}

该函数将会在当前目录下生成一个model包,包含数据库中所有表的结构体,
目录结构如下:

├─model
│    grade.gen.go
│    student.gen.go
│    user.gen.go

打开其中一个文件,它不仅包含了结构体定义,还包含了json绑定字符串和返回表名的方法:

// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.package modelimport ("time"
)const TableNameStudent = "student"// Student mapped from table <student>
type Student struct {Stuid int32     `gorm:"column:stuid;primaryKey;autoIncrement:true" json:"stuid"`Stuno string    `gorm:"column:stuno" json:"stuno"`Name  string    `gorm:"column:name" json:"name"`Sex   string    `gorm:"column:sex" json:"sex"`Age   int32     `gorm:"column:age" json:"age"`Birth time.Time `gorm:"column:birth" json:"birth"`
}// TableName Student's table name
func (*Student) TableName() string {return TableNameStudent
}

之后若数据库中的表结构发生变化,只需用GenStruct()GenAllStructs()重新生成结构体即可。

注意
1.必须在mod同级目录调用GenStruct()或GenAllStructs()。
2.该包基于GORM相关的包,但本人的包已包含相关依赖,直接下载本人的包即可使用GORM。


http://www.mrgr.cn/news/56914.html

相关文章:

  • 个人博客系统_测试报告
  • 代码随想录算法训练营第46期Day35
  • Qt编程技巧小知识点(4)十进制与十六进制数据转化(升级版)
  • SSRF-利用dict协议-攻击redis
  • 免费开源的微信开发框架
  • 从珀莱雅看美妆品牌如何借势双11,实现销量与口碑双赢
  • 查看Chrome安装路
  • 天润融通知识库赋能一线客户运营,不是宝妈也可以成为育儿专家
  • 计算机专业大学四年的学习路线(非常详细),零基础入门到精通,看这一篇就够了
  • 低秩矩阵恢复
  • KCD81PJE1T92 SSD:企业级存储解决方案的卓越选择
  • Bench4Merge:一个提升自动驾驶车辆在复杂交通场景中并车能力的综合性评估平台。
  • 1.2 C++内存
  • 证明非平方整数阶射影平面关联矩阵的主对角线有t+1个1
  • k8s_Pod健康检查
  • Python Pandas 安装指南:快速入门与验证
  • 论文开题前的必备指南:如何做好充分准备
  • LeetCode题练习与总结:重新安排行程--332
  • 【c++丨STL】string类的使用
  • HarmonyOS鸿蒙分布式文件操作的时候权限问题
  • iOS 18.1新功能抢先看:控制中心大变身,睡眠呼吸暂停监测来袭
  • 经典动态规划问题:含手续费的股票买卖【从 O(n) 到 O(1) 的优化解析】
  • 多尺度建模:从理论到实践的深入探讨
  • 高客单价产品,Facebook广告投放应该怎么做?
  • Java手动实现完整的加密通信流程
  • Go中的指针指向指针(双指针)