本文说明如何编写一个worm模型的结构体的定义, 并说明如何使用dbreverse工具自定生成模型结构体。
模型定义
模型定义用于将一个struct映射为数据库中对应的一张表。worm使用名称为"db"的Tag映射数据库字段,"db"后面是字段的名称以及其他的约定的规则,例如对于下面的user表:
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`passwd` varchar(200) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`updated` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
);
采用段标签方式定义的实体类如下:
type User struct {
Id int64 `db:"id;autoincr"`
Name string `db:"name"`
Age int64 `db:"age"`
Passwd string `db:"passwd"`
Created time.Time `db:"created;n_update"`
}
func (ent *User) TableName() string {
return "user"
}
说明:
- autoincr用于说明该字段是自增ID
- n_update用于说明该字段不可用于update语句中
- n_insert用于说明该字段不可用于insert语句中
wego/worm的详细文档请访问:github.com/haming123/wego
自动生成模型定义
通常你可以手工编写模型的struct,若您的应用中有大量的模型struct需要定义,您也可以使用自动模型struct自动生成工具,以下介绍模型struct自动生成工具dbreverse的使用步骤。
- 首先下载dbreverse源码
go get github.com/haming123/dbreverse
- 然后编译dbreverse
cd path/of/dbreverse
go build
- 编辑app.conf配置文件
app.conf是dbreverse的配置文件,采用ini格式:
#数据库驱动名称:mysql/mssql/postgres
db_driver = mysql
#go代码的package名称
pkg_name = model
#create_time字段的名称
create_time = created
#是否采用pool来生成Model对象, true or false
use_model_pool = flase
[db]
db_host = 127.0.0.1
db_port = 3306
db_name = demo
db_user = myuser
db_pwd = userpwd
- 运行dbreverse来生成模型struct
cd path/of/dbreverse
./dbreverse -t 表名称