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