xorm生成代码

下载源码

1
git clone https://gitea.com/xorm/cmd.git

编译

1
2
cd ../cmd/xorm
go build

生成代码

1
./xorm reverse mysql "root:123456@tcp(127.0.0.1:3306)/doss" templates/goxorm ./model

配置文件

cmd\xorm\templates\goxorm\config

1
2
3
4
5
6
7
8
9
10
11
12
13
#语言
lang=go
#生成json tag(0:不生成 1:生成)
genJson=1
prefix=cos_
#当genJson=1时,忽略json字段(数据库字段,逗号隔开)
ignoreColumnsJSON=detail
#对应数据库字段(逗号隔开)
created=created_at
#对应数据库字段(逗号隔开)
updated=updated_at
#对应数据库字段(逗号隔开)
deleted=deleted_at

设置createdupdateddeleted后,CreatedAtUpdatedAt会生成createdupdatedignoreColumnsJSON设置后Detail变成json:"-"

1
2
3
4
5
6
7
8
9
10
11
12
type LoginLog struct {
Id int64 `json:"id" xorm:"pk comment('系统编号') BIGINT(20)"`
CreatedAt time.Time `json:"created_at" xorm:"not null default '0000-00-00 00:00:00' created comment('创建时间') DATETIME"`
UpdatedAt time.Time `json:"updated_at" xorm:"not null default '0000-00-00 00:00:00' updated comment('更新时间') DATETIME"`
UserId int64 `json:"user_id" xorm:"not null comment('用户ID') BIGINT(20)"`
Agent string `json:"agent" xorm:"not null comment('登录终端') VARCHAR(50)"`
Os string `json:"os" xorm:"not null default '' comment('操作系统') VARCHAR(50)"`
Ip string `json:"ip" xorm:"not null default '' comment('登录IP') VARCHAR(50)"`
Loc string `json:"loc" xorm:"not null default '' comment('IP所在地') VARCHAR(50)"`
Status int `json:"status" xorm:"not null default 0 comment('登录状态(1:成功;2:失败)') TINYINT(4)"`
Detail string `json:"-" xorm:"not null default '' comment('详细信息') VARCHAR(50)"`
}

移除注释

修改源码reverse.go,需要修改两处地方

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
if err == nil && !info.IsDir() {
configs = loadConfig(cfgPath)
if l, ok := configs["lang"]; ok {
lang = l
}
if j, ok := configs["genJson"]; ok {
genJson, err = strconv.ParseBool(j)
}

//[SWH|+]
if j, ok := configs["prefix"]; ok {
prefix = j
}

if j, ok := configs["ignoreColumnsJSON"]; ok {
ignoreColumnsJSON = strings.Split(j, ",")
}

if j, ok := configs["created"]; ok {
created = strings.Split(j, ",")
}

if j, ok := configs["updated"]; ok {
updated = strings.Split(j, ",")
}

if j, ok := configs["deleted"]; ok {
deleted = strings.Split(j, ",")
}

//添加下面3行代码
if j, ok := configs["supportComment"]; ok {
supportComment, err = strconv.ParseBool(j)
}

}

if langTmpl, ok = langTmpls[lang]; !ok {
fmt.Println("Unsupported programing language", lang)
return
}

os.MkdirAll(genDir, os.ModePerm)

//注释下面这行代码
//supportComment = (args[0] == "mysql" || args[0] == "mymysql")

修改配置文件cmd\xorm\templates\goxorm\config

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#语言
lang=go
#生成json tag(0:不生成 1:生成)
genJson=1
prefix=cos_
#当genJson=1时,忽略json字段(数据库字段,逗号隔开)
ignoreColumnsJSON=detail
#对应数据库字段(逗号隔开)
created=created_at
#对应数据库字段(逗号隔开)
updated=updated_at
#对应数据库字段(逗号隔开)
deleted=deleted_at

#增加是否生成注释配置项
#0:不生成 1:生成
supportComment=0

重新编译代码,重新生成

1
2
3
4
5
6
7
8
9
10
11
12
type LoginLog struct {
Id int64 `json:"id" xorm:"pk BIGINT(20)"`
CreatedAt time.Time `json:"created_at" xorm:"not null default '0000-00-00 00:00:00' created DATETIME"`
UpdatedAt time.Time `json:"updated_at" xorm:"not null default '0000-00-00 00:00:00' updated DATETIME"`
UserId int64 `json:"user_id" xorm:"not null BIGINT(20)"`
Agent string `json:"agent" xorm:"not null VARCHAR(50)"`
Os string `json:"os" xorm:"not null default '' VARCHAR(50)"`
Ip string `json:"ip" xorm:"not null default '' VARCHAR(50)"`
Loc string `json:"loc" xorm:"not null default '' VARCHAR(50)"`
Status int `json:"status" xorm:"not null default 0 TINYINT(4)"`
Detail string `json:"detail" xorm:"not null default '' VARCHAR(50)"`
}