SQL的创建语句转化成Golang的ORM结构体(struct).pdfVIP

  • 159
  • 0
  • 约3.55千字
  • 约 3页
  • 2023-08-10 发布于上海
  • 举报

SQL的创建语句转化成Golang的ORM结构体(struct).pdf

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:

文档评论(0)

1亿VIP精品文档

相关文档