讲师中心 微信公众号
AI工具推荐 视频效率加速

XORM框架标签怎么用?拆解column、type与null属性

浅丽酱_3153

浅丽酱_3153

发布时间:2026-11-04 19:01:26

|

535人浏览过

|

来源于php中文网

原创

XORM框架标签需用column(单引号包裹)、type(内置关键词)与null/notnull显式声明:xorm:"varchar(20) 'user_name' notnull"精确控制字段名、类型及非空约束。

xorm框架标签怎么用?拆解column、type与null属性 - php中文网

XORM框架标签怎么用?拆解column、type与null属性

要在Go结构体中精确控制数据库字段名、类型和空值约束,必须正确使用xorm结构体字段上的Tag——它不是可选装饰,而是映射逻辑的核心开关。写错一个关键字或漏掉引号,可能导致建表失败、字段名被自动蛇形转换、甚至null约束失效。

定义字段名:用name或单引号包裹的column

方法一:直接指定数据库列名
在字段Tag中写 xorm:"name(user_name)" 或 xorm:"'user_name'",两者等效。前者显式声明name关键字,后者用单引号包裹即默认视为列名。【单引号不可省略于含下划线、数字开头或与关键字冲突的列名】

方法二:混用列名与类型声明
写成 xorm:"varchar(50) 'usr_name'" 是合法的,xorm会把单引号内内容识别为列名,其余部分解析为类型和约束。但若写成 xorm:"varchar(50) usr_name"(无引号),xorm会尝试按SnakeMapper规则转换usr_name → usr_name,实际仍可能生效,但属于隐式行为,不推荐。

注意:如果结构体字段名本身是 UserName,而你希望数据库列名为 user_name,仅靠 xorm:"varchar(50)" 不够——xorm默认启用 SnakeMapper,会自动转,但这种依赖映射器的行为不稳定;显式写 'user_name' 才真正锁定列名。

声明数据类型:用xorm内置类型关键词

第一步:选择兼容型关键词
xorm不强制要求写标准SQL类型(如VARCHAR),而是提供了一组跨数据库适配的关键词:text、tinytext、mediumtext、longtext、blob、tinyblob、mediumblob、longblob、char、varchar、tinyint、smallint、mediumint、int、bigint、float、double、decimal、bool、date、datetime、time、timestamp、binary、varbinary、enum、set。

第二步:带长度或精度时加括号
xorm:"varchar(32)" 合法;xorm:"decimal(10,2)" 合法;xorm:"int(11)" 在MySQL中有效,但PostgreSQL会忽略括号内容,所以更稳妥的是只写 xorm:"int" 并依赖驱动自动适配。

第三步:避免混用原生SQL类型
不要写 xorm:"VARCHAR(32) NOT NULL"(全大写+空格+SQL关键字)。xorm解析Tag时区分大小写不敏感,但NOT NULL会被当作字段名的一部分而非约束,导致建表语句出错。正确写法是 xorm:"varchar(32) notnull"。

XORM框架 1.3.10
XORM框架 1.3.10

XORM框架 1.3.10版本源码包下载,包含 PostgreSQL 字段同步、GBase8s 与 libSQL 驱动、Oracle 日期和 MSSQL 分页修复。

下载

控制NULL约束:notnull与null必须显式声明

方法1:禁止为空 → 加 notnull
Name string `xorm:"varchar(20) notnull"` 生成的SQL字段定义为 name VARCHAR(20) NOT NULL。这是最常用也最安全的写法。

方法2:允许为空 → 显式加 null 或不加任何约束
默认情况下,未声明 notnull 的字段即为可空。但强烈建议显式写 null,例如 Remark string `xorm:"text null"`,因为某些版本xorm在字段类型为text/blob时会默认加notnull,显式声明可消除歧义。

方法3:禁用隐式NOT NULL陷阱
如果字段是int64且未赋初值,在Go中默认为0,但数据库里你可能希望它是NULL。此时必须同时写 xorm:"int null" 并确保该字段在Insert前设为指针类型(*int64)或使用 -> 标签控制写入逻辑,否则0会被写入而非NULL。

组合实战:一个字段标签的完整拆解

看这个真实字段:CreatedAt time.Time `xorm:"datetime created notnull 'created_at'"`
→ datetime 是xorm认可的跨库时间类型关键词;
→ created 是xorm内置行为标签,表示插入时自动填当前时间;
→ notnull 强制该字段非空;
→ 'created_at' 用单引号锁定列名为下划线风格,覆盖默认映射器行为。【四个组件缺一不可,顺序可变,但单引号必须存在】

如果去掉单引号,写成 xorm:"datetime created notnull created_at",xorm会把 created_at 当作另一个约束关键词处理,报错“unknown tag created_at”。

这一步操作起来很简单,直接把字段Tag按上述规则拼好就行。

热门AI工具

更多
蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

Docker Desktop镜像构建教程
Docker Desktop镜像构建教程

想使用Docker Desktop将本地项目构建成Docker镜像?本专题围绕镜像构建的实际操作展开,介绍Dockerfile编写、构建命令使用、镜像标签设置和构建日志查看等内容,同时整理镜像无法生成、依赖安装失败及构建缓存异常等问题的排查思路。

0

2026.11.03

Docker Desktop容器创建指南
Docker Desktop容器创建指南

本专题聚焦Docker Desktop容器创建与运行配置,介绍通过本地镜像或远程镜像创建容器的方法,以及容器启动、终端访问、日志查看和基础管理等操作。针对端口冲突、参数配置不当、容器无法启动等情况,也整理了相应的排查方向。

0

2026.11.03

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

0

2026.11.03

Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

0

2026.11.03

Tailwind CSS 常用类名怎么记
Tailwind CSS 常用类名怎么记

Tailwind CSS 类名很多,先按布局、间距、文字、颜色和状态分组记忆,再通过官方文档检索具体写法。本专题结合类名排序、动态拼接失效、自定义实用类等问题,帮助你建立常用类名的速查方法。

0

2026.11.03

码上飞入口地址合集
码上飞入口地址合集

本专题汇总了码上飞(CodeFlying)的官方入口地址合集,涵盖官网主站及网页版在线使用入口,支持注册登录后直接在线体验零代码AI应用生成。同时整理了APP端下载渠道与小程序入口,助你快速访问平台,通过自然语言描述需求即可生成应用、小程序或网站。

0

2026.11.03

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

20

2026.11.02

Uvicorn使用教程
Uvicorn使用教程

本专题汇总了Uvicorn使用教程与启动运行指南,涵盖其作为Python ASGI服务器的定位与特点,以及命令行启动(uvicorn main:app --reload)、参数配置(host/port/workers)、程序内嵌运行与Gunicorn结合部署等核心用法。同时整理了热重载调试、日志配置与生产环境部署优化等技巧,助你快速掌握Uvicorn的运行与配置。

40

2026.11.02

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
XORM框架事务处理手册
XORM框架事务处理手册

共0课时 | 0人学习

XORM框架官方中文文档
XORM框架官方中文文档

共0课时 | 0人学习

Go-zero与XORM网盘项目实战
Go-zero与XORM网盘项目实战

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn