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

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

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

autosql

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

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

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

go mod init 你的模块名

(2)下载到本地(若之前就下载过,请忽略此步,转至第四步)

go get gitee.com/zht639/my_gopkg

(3)在go文件中导包即可

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

(4)若之前就下载过我的包,则需要打开mod,删除require语句,再执行如下指令

go mod tidy

二、功能概述

  • 连接函数:

    • 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")
}

该函数将会在当前目录下(main.go所在目录)生成一个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()重新生成结构体即可。

注:该包基于GORM相关的包,但本人的包已包含相关依赖,直接下载本人的包即可使用GORM,CRUD操作也推荐使用GORM的提供的函数。

http://www.lryc.cn/news/464164.html

相关文章:

  • Sentinel 快速入门
  • 基于SpringBoot健康生活助手微信小程序【附源码】
  • 功能安全实战系列-软件FEMA分析与组件鉴定
  • 【数据结构与算法】链表(上)
  • svn-拉取与更新代码
  • 【C++ 算法进阶】算法提升四
  • 多种方式实现安全帽佩戴检测
  • 基于PHP+MySQL+Vue的网上订餐系统
  • Vue学习笔记 Class绑定 Style绑定 侦听器 表单输入绑定 模板引用 组件组成 组件嵌套关系
  • 【AIGC】ChatGPT与人类理解力的共鸣:人机交互中的心智理论(ToM)探索
  • 代码训练营 day39|0-1背包问题,LeetCode 416
  • LeetCode 203 - 移除链表元素
  • 【海图界面上一些常见术语UTC、HDG、COG、SOG、LAT、LON的基本解释】
  • HL7协议简介及其在STM32上的解析实现
  • TensorRT推理端到端
  • 获取历史的天气预报数据的网站
  • 【VUE】Vue中常用的修饰符
  • 数据分箱:如何确定分箱的最优数量?
  • 机器学习核心功能:分类、回归、聚类与降维
  • Python爬虫-eBay商品排名数据
  • LabVIEW提高开发效率技巧----图像处理加速
  • AcWing1027
  • 23 Shell Script服务脚本
  • 三周精通FastAPI:3 查询参数
  • 大语言模型学习指南:入门、应用与深入
  • 【Linux-进程间通信】匿名管道+4种情况+5种特征
  • Perl打印9x9乘法口诀
  • Android--第一个android程序
  • MySQL的并行复制原理
  • 2023年五一杯数学建模C题双碳目标下低碳建筑研究求解全过程论文及程序