代码拉取完成,页面将自动刷新
package main
import (
"fmt"
"gt"
)
type Model struct {
Id int32 `db:"id,omitempty" gen:"pk,ai"`
CreatedAt string `db:"created_at"`
}
type ThreeStudentModel struct {
Model
Name string `db:"name" gen:"notnull"`
Content string `db:"content" gen:"type:text"`
Score int `db:"score" gen:"length:1,decimal:1,default:1,notnull,unsigned"`
}
type TwoStudent struct {
Model
Name string `db:"name" gen:"notnull"`
Content string `db:"content" gen:"type:text"`
Score int `db:"score" gen:"length:1,decimal:1,default:1,notnull,unsigned"`
}
func main() {
b := gt.New()
b.SetSchema("stu")
sql, err := b.Model(ThreeStudentModel{})
fmt.Println(sql, err)
sql, err = b.Model(TwoStudent{}, "twostu")
fmt.Println(sql, err)
b = gt.New()
b.SetMode(gt.MYSQL)
sql, err = b.Model(TwoStudent{})
fmt.Println(sql, err)
}
result output
-- sqlite
CREATE TABLE 'stu'.'three_student'(
'id' integer PRIMARY KEY AUTOINCREMENT,
'created_at' varchar,
'name' varchar NOT NULL,
'content' text,
'score' bigint NOT NULL DEFAULT 1
);
CREATE TABLE 'stu'.'twostu'(
'id' integer PRIMARY KEY AUTOINCREMENT,
'created_at' varchar,
'name' varchar NOT NULL,
'content' varchar,
'score' bigint NOT NULL DEFAULT 1
);
-- mysql
CREATE TABLE `three_student`(
`id` int PRIMARY KEY AUTO_INCREMENT,
`created_at` varchar,
`name` varchar NOT NULL,
`content` text,
`score` bigint UNSIGNED NOT NULL DEFAULT 1
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4;
CREATE TABLE `twostu`(
`id` int PRIMARY KEY AUTO_INCREMENT,
`created_at` varchar,
`name` varchar NOT NULL,
`content` varchar,
`score` bigint UNSIGNED NOT NULL DEFAULT 1
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4;
db
Corresponding data table column name, Id
to id
, Content
to content
type People struct {
Id int32 `db:"id,omitempty" gen:"pk,ai"`
Content string `db:"content" gen:"type:text"`
}
gen
属性 | 默认值 | 说明 |
---|---|---|
type | 原生sql数据类型:char,text,mediumint,timestamp,datetime 等 | |
length | 数据长度 | |
decimal | 2 | 浮点类型精度 |
default | 默认值 | |
pk | 主键 | |
ai | 自增 | |
comment | 注释 | |
unsigned | 无符号 | |
notnull | not null |
数据库数据类型 | 范围 | 无符号范围 | 数据类型 |
---|---|---|---|
TINYINT | -128〜127 | 0 〜255 | int8/uint8 |
SMALLINT | -32768〜32767 | 0〜65535 | int16/uint16 |
INT (INTEGER) | -2147483648〜2147483647 | 0〜4294967295 | int32/uint32 |
BIGINT | -9223372036854775808〜9223372036854775807 | 0〜18446744073709551615 | int64 int / uint64 uint |
string -> varchar
time.Time -> datetime
// int int8 int16 int32 int64 byte rune
// uint uint8 uint16 uint32 uint64 byte rune
// float32 float64
// char varchar text
// datetime timestamp
// TINYINT -128〜127 0 〜255 int8
// SMALLINT -32768〜32767 0〜65535 int16
// MEDIUMINT -8388608〜8388607 0〜16777215
// INT (INTEGER) -2147483648〜2147483647 0〜4294967295 int32
// BIGINT -9223372036854775808〜9223372036854775807 0〜18446744073709551615 int64 int
//
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。