- 159
- 0
- 约3.55千字
- 约 3页
- 2023-08-10 发布于上海
- 举报
SQL的创建语句转化成Golang的ORM结构体(struct)
在Golang的Web编程中,有时候我们创建了⼀个SQL的表,需要编写对应的结构体的代码。这是⼀项繁琐⽆聊的⼯作。本⽂介绍⼀种⾃动
将创建表格的SQL语句转换成Golang的ORM结构体的代码,从⽽提⾼编程效率。代码来⾃于。
例⼦
例⼦:下⾯是⼀个创建 user 表的sql语句
CREATE TABLE `USER`(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT primary key,
`ip_address` INT NOT NULL DEFAULT 0 COMMENT ip_address,
`nickname` VARCHAR(128) NOT NULL DEFAULT COMMENT user note,
`description` VARCHAR(256) NOT NULL DEFAULT COMMENT user description,
`creator_email` VARCHAR(64) NOT NULL DEFAULT COMMENT creator email,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT create time,
`deleted_at` TIMESTAMP NULL DEFAULT NULL COMMENT delete time,
PRIMARY KEY(`id`)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT=user table;
函数 SqlToGo 将其转化成下⾯的代码。其中,包名是可以选择的。
package sql_to_go_test
import (
time
)
type USER struct {
Id uint `comment:primary key`
IpAddress int `comment:ip_address`
Nickname string `comment:user note`
Description string `comment:user description`
CreatorEmail string `comment:creator email`
CreatedAt time.Time `comment:create time`
DeletedAt time.Time `comment:delete time`
}
基本思想
SqlToGo 主要做了2件事。
1. 解析sql语句,这⾥使⽤第三⽅包 /xwb1989/sqlparser 去解析,获取表的名字,字段名,字段类型,字段的注释。
2. 将解析的MySQL数据类型转化为Golang的数据类型,并且将以上的数据,做字符串的拼接,拼接成⼀个Golang的struct⽂件。
MySQL与Golang的类型对应映射如下.
var sqlTypeMap = map[string]string{
int: int,
integer: int,
tinyint: int8,
smallint: int16,
mediumint: int32,
bigint: int64,
int unsigned: uint,
integer unsigned: uint,
tinyint unsigned: uint8,
smallint unsigned: uint16,
mediumint unsigned: uint32,
bigint unsigned: uint64,
bit: byte,
bool: bool,
enum: string,
set: string,
varchar: string,
char: string,
tinytext: string,
mediumtext:
您可能关注的文档
- 社会监督员的职责.pdf
- 网购指南分享我如何在网上买衣服的经验和心得.pdf
- 思维导图在初中数学教学中的应用探究.pdf
- 宋代市井音乐生活的画卷.pdf
- 幼儿园各种各样蔬菜教案.pdf
- 军训请假制度.pdf
- 八年级上册地理逐步完善的交通运输网知识点:期末考试复习.pdf
- 如何看待人大历史教授孙家洲和郝相赫断绝师生关系的事件.pdf
- 冀教版九年级英语八单元短语.pdf
- 学校各功能室简介及引导员解说词.pdf
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测生物试卷+答案.doc
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测语文试卷+答案.doc
- 四川省绵阳南山中学实验学校2025-2026学年高三上学期1月月考数学含答案.doc
- 2026届辽宁省大连市高三上学期双基考试物理试卷+答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测化学含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测生物含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测英语含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测政治含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试化学含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试生物含答案.doc
最近下载
- 广州数控GSK980TA1-TA2-TB1-TB2车床数控系统 使用手册.pdf
- 虚实乱针绣入门.ppt VIP
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、异丙醇和正丁醇检验.pdf
- 曲柄连杆机构的运动与受力分析讲解学习.pptx VIP
- 如此伟大的爱G波利切un amore cosi grande G-E-G-F-5P.pdf VIP
- 钛白废酸废水综合治理项目可行性研究报告.docx
- 陕09J02-屋面-标准图集.docx
- 中药当归中阿魏酸的提取工艺研究.pptx
- 蔬菜大棚建设实施方案范文(8篇).docx VIP
- 结合多源异构数据融合技术的人口增长时空预测模型构建及应用分析.pdf VIP
原创力文档

文档评论(0)