Golang Go语言中xorm的结构体字段映射
想把公共的字段( id,create_time,update_time…)拿出来单独放一个结构体,然后嵌套到结构体上最后映射到字段上。试了一下,发现它直接把嵌套的结构体名作为 text 类型的字段创建到了表上了。
1.xorm 支持嵌套结构体然后映射字段吗?
2.xorm 能不能通过字段属性定义字段的前后顺序?
type BaseModel struct {
Id int32 json:"id" xorm:"int pk autoincr(1) comment('用户 ID')"
CreateAt time.Time json:"create_at" xorm:"create_at updated comment('创建时间')"
UpdateAt time.Time json:"update_at" xorm:"update_at updated comment('更新时间')"
}
type User struct {
UserName string json:"username" xorm:"varchar(32) notnull comment('用户名')"
Password string json:"password" xorm:"varchar(32) notnull comment('用户密码')"
BaseModel
}
最后出现了在数据库上的表定义是:
CREATE TABLE user
(
user_name
varchar(32) NOT NULL COMMENT ‘用户名’,
password
varchar(32) NOT NULL COMMENT ‘用户密码’,
base_model
text
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
Golang Go语言中xorm的结构体字段映射
更多关于Golang Go语言中xorm的结构体字段映射的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
第一个问题又看了看文档已经解决了,是要在对应的嵌套的结构体后面加 extends 的属性定义
type User struct {
UserName string json:"username" xorm:"varchar(32) notnull comment('用户名')"
Password string json:"password" xorm:"varchar(32) notnull comment('用户密码')"
BaseModel xorm:"extends"
}
定义字段的顺序还是没发现怎么搞,比如我想要 id 字段在数据库表结构的字段是第 1 列,create_at 和 update_at 在最后 2 列
更多关于Golang Go语言中xorm的结构体字段映射的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
关于问题 2, 我印象中表字段顺序就是按照 struct 字段顺序排列的吧?
你是想用 tag 手动标注字段顺序, 似乎没有这个功能.
在Go语言中,Xorm是一个简单而强大的ORM(对象关系映射)库,它允许开发者通过Go的结构体来操作数据库中的表。在使用Xorm进行结构体字段映射时,通常需要注意以下几点:
-
结构体标签:Xorm通过结构体字段上的标签(tag)来映射数据库表的列。例如,
xorm:"'column_name'"
可以指定结构体字段映射到数据库中的哪个列。如果字段名与列名相同,可以省略此标签。 -
数据类型:确保结构体字段的类型与数据库列的类型兼容。Xorm支持多种Go语言基本类型和自定义类型,这些类型会映射到数据库中的相应类型。
-
主键与自增:通过
xorm:"'pk' autoincr"
标签可以指定某个字段为主键且自增。这通常是主键ID字段的常用设置。 -
忽略字段:如果某个结构体字段不需要映射到数据库列,可以使用
-
标签来忽略它,例如xorm:"-"
。 -
索引与唯一约束:可以通过标签为字段添加索引或唯一约束,如
xorm:"index"
或xorm:"unique"
。 -
时间类型:对于时间类型的字段,Xorm支持多种时间格式,可以通过标签指定时间格式,如
xorm:"TypeTime 'YYYY-MM-DD HH:MI:SS'"
。
通过合理使用这些标签和类型映射,Xorm可以极大地简化数据库操作,提高开发效率。