Help us shape the future of Go! Take the 2026 Go Developer Survey

config

package
v0.8.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

Package config 负责加载 base-code.yaml 并补齐约定默认值。 设计目标:约定优于配置——layers/包名/idType 等不再配置,仅留必填的工程包与数据库连接。

Index

Constants

This section is empty.

Variables

View Source
var ClassMappingKeys = []string{
	"po", "mapper", "service", "service-impl", "query", "converter",
	"req-dto", "resp-dto", "query-req-dto", "page-query-req-dto", "update-by-query-req-dto",
	"api", "api-impl",
}

ClassMappingKeys 是 class-mapping 的全部合法键:generator.Layers 中非 Resource 层的层名 (mapper-xml 没有自己的类,其文件名与 namespace 跟随 mapper 的类映射,故不在此列)。 注意:与 internal/generator 的 Layers 表保持一致——generator 侧有一致性测试把关。

View Source
var PackageMappingKeys = []string{
	"model.po", "mapper", "mapper-xml", "service", "service.impl", "model.query",
	"converter", "model.dto.req", "model.dto.resp", "api", "api.impl",
}

PackageMappingKeys 是 package-mapping 的全部合法键:generator.Layers 去重后的 10 个 Java 包后缀 + 特殊键 mapper-xml(XML 目录独立映射,不随 java mapper 移动)。 注意:与 internal/generator 的 Layers 表保持一致——generator 侧有一致性测试把关, 新增层时两处同步修改。

Functions

This section is empty.

Types

type Api added in v0.2.0

type Api struct {
	ServiceName string `yaml:"service-name"`
	BasePath    string `yaml:"base-path"`
}

Api 表示生成 API 层所需的服务标识配置。 service-name 填入 @FeignClient(name=...)(注册中心应用名); base-path 是所有 API 端点的基础路径前缀。 两者缺省均从 base-package 末段派生(见 applyDefaults)。

type AutoFill

type AutoFill struct {
	InsertColumns []string `yaml:"insert-columns"`
	UpdateColumns []string `yaml:"update-columns"`
}

AutoFill 表示自动填充列的约定。

type Config

type Config struct {
	Tables        []string   `yaml:"tables"` // 生成目标表;flag(CSV)与配置文件(列表)二选一,合并后必填
	BasePackage   string     `yaml:"base-package"`
	OutputRoot    string     `yaml:"output-root"`
	ResourcesRoot string     `yaml:"resources-root"` // 可选;mapper-xml 输出根,缺省由 OutputRoot 推导
	Author        string     `yaml:"author"`
	UseJakarta    *bool      `yaml:"use-jakarta"` // 指针:区分「未配置」与「配置为 false」
	DateType      string     `yaml:"date-type"`
	WithApi       *bool      `yaml:"with-api"` // 指针:区分「未配置」(缺省 false,不生成 API 层)与「显式 true」
	Api           Api        `yaml:"api"`
	Datasource    Datasource `yaml:"datasource"`
	AutoFill      AutoFill   `yaml:"auto-fill"`
	// PackageMapping 包映射:键=约定包后缀(含特殊键 mapper-xml),值=相对 base-package 的目标后缀。
	// 空 map / nil = 全约定默认。合法键见 PackageMappingKeys。
	PackageMapping map[string]string `yaml:"package-mapping"`
	// ClassMapping 类名映射:键=层名(13 个有类的层,mapper-xml 无类不算),
	// 值=含恰一个 {} 占位符的模式({} 代表表名大驼峰,如 I{}Service → ISysUserService)。
	// 空 map / nil = 全约定默认。合法键见 ClassMappingKeys;变量名不跟随类名(保持模型派生)。
	ClassMapping map[string]string `yaml:"class-mapping"`
}

Config 是生成器的全部配置。 Go 小白知识点:结构体标签 `yaml:"..."` 告诉 yaml 库 YAML 键如何对应字段。

func Load

func Load(path string) (Config, error)

Load 读取并解析配置文件,随后补齐约定默认值。 LoadWithOverrides 的薄封装:必须有文件、无内联覆盖,保持既有调用方兼容。

func LoadWithOverrides added in v0.3.0

func LoadWithOverrides(path string, requireFile bool, ov Overrides) (Config, error)

LoadWithOverrides 加载配置并叠加命令行内联覆盖。 requireFile=false 时文件不存在不视为错误(纯 flag 模式,agent 一行直达); true 时文件必须存在(用户显式 --config,不静默忽略)。 优先级:显式 flag > 配置文件 > 约定默认值。

type Datasource

type Datasource struct {
	Dialect  string `yaml:"dialect"`
	Host     string `yaml:"host"`
	Port     int    `yaml:"port"`
	Username string `yaml:"username"`
	Password string `yaml:"password"`
	Database string `yaml:"database"`
}

Datasource 表示数据库连接配置。

type Overrides added in v0.3.0

type Overrides struct {
	Tables         *[]string
	BasePackage    *string
	OutputRoot     *string
	ResourcesRoot  *string
	Author         *string
	UseJakarta     *bool
	DateType       *string
	WithApi        *bool
	Dialect        *string
	DbHost         *string
	DbPort         *int
	DbUser         *string
	DbPassword     *string
	DbName         *string
	ServiceName    *string
	BasePath       *string
	AutoFillInsert *[]string
	AutoFillUpdate *[]string
	PackageMapping *map[string]string
	ClassMapping   *map[string]string
}

Overrides 表示命令行内联配置对文件配置的逐项覆盖。 Go 小白知识点:全指针字段——nil 表示「命令行未提供该项」,与零值(""、0、false)区分开, 这样 --use-jakarta=false、--db-port 0 这类「显式传零值」也能正确表达。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL