Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Generate ¶
Generate 根据表信息和列定义生成 Entity 结构体、DO 结构体及两者的互转方法(ToDO/ToEntity), 并将生成代码写入 OutputDir 下的 Go 文件。 处理流程:
- 校验数据库方言、表名(防路径穿越)和 JSON tag 命名风格;
- 复制列信息,为副本中未显式指定的字段补充字段名(toPascalCase)、字段类型(formatStructFieldType) 和 JSON tag 值(formatJSONTag),不改动调用方传入的数据;
- 检测转换后字段名为空/非法标识符/重复的列并报错,避免产出无法编译的代码;
- 生成 Entity(值类型字段)和 DO(any 类型字段)结构体及互转方法;
- 将生成代码写入 {OutputDir}/{TableName}.go,已存在的文件通过 AST 解析保留用户自定义代码, 落盘前对完整内容做 go/parser 自校验,非法产物直接报错不写文件。
Types ¶
type Column ¶
type Column struct {
// 列名
Name string
// 列类型(如 "VARCHAR(255)"、"bigint(20)"、"text")
Type string
// 列注释,会生成到结构体字段的tag中,示例:description:"Comment"
Comment string
// 生成结构体字段时候的信息
StructFieldInfo StructFieldInfo
}
type Input ¶
type Input struct {
OutputDir string // 输出目录
Database string // 数据库名
Dialect Dialect // 数据库方言("mysql"、"postgres"、"sqlite")
TableName string // 表名(支持任意命名风格,用于推导文件名和结构体名)
TableComment string // 表注释
ColumnTagName string // 表字段的结构体字段的 tag 名称(如 "column"、"db" 等)
JsonTagValueCase NameCase // JSON tag 的命名风格,空值不生成 json tag
Columns []*Column //表所有的字段
}
type NameCase ¶
type NameCase string
const ( // NameCaseLowerCamel lowerCamel 风格,如 getUserById NameCaseLowerCamel NameCase = "lowerCamel" // NameCaseUpperCamel upperCamel 风格,如 GetUserById NameCaseUpperCamel NameCase = "upperCamel" // NameCaseLowerSnake lowerSnake 风格,如 user_id NameCaseLowerSnake NameCase = "lowerSnake" // NameCaseUpperSnake upperSnake 风格,如 USER_ID NameCaseUpperSnake NameCase = "upperSnake" // NameCaseLowerKebab lowerKebab 风格,如 user-id NameCaseLowerKebab NameCase = "lowerKebab" // NameCaseUpperKebab upperKebab 风格,如 USER-ID NameCaseUpperKebab NameCase = "upperKebab" )
Click to show internal directories.
Click to hide internal directories.