必须通过自定义TableMapper实现数据库表前缀统一添加,使用names.NewPrefixMapper包装映射器并调用engine.SetTableMapper绑定,且须在Sync2前完成,否则表名无前缀。

要在XORM中为数据库表统一添加前缀,必须通过自定义TableMapper实现,不能仅靠字符串拼接或手动改结构体名。
创建带前缀的TableMapper实例
使用 names.NewPrefixMapper 包装原始映射器,例如将 users 表自动转为 prefix_users:
tbMapper := names.NewPrefixMapper(names.SnakeMapper{}, "prefix_")
这一步必须在 engine 初始化之后、Sync 或查询之前调用,否则前缀不会生效。
将前缀Mapper绑定到Engine
调用 engine.SetTableMapper(tbMapper) 完成绑定。
【必须在 Sync2 之前设置】 如果先执行 engine.Sync2(new(User)) 再设置前缀,表会按无前缀名创建,后续查询将找不到表。
验证前缀是否生效
方法一:启动时打印建表SQL(开启日志)→ 设置 engine.ShowSQL(true) → 运行 engine.Sync2(new(User)) → 观察输出中 CREATE TABLE 语句的表名是否含 prefix_。
方法二:直接查数据库 → 执行 SHOW TABLES LIKE 'prefix_%' → 确认生成的表名确实带前缀。
方法三:运行时动态获取 → 调用 engine.TableName(&User{}) → 返回值应为 prefix_users(假设结构体名为 User)。

















