模型定义用于将一个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;autoid"`
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"
}
说明:
通常你可以手工编写模型的struct,若您的应用中有大量的模型struct需要定义,您也可以使用自动模型struct自动生成工具,以下介绍模型struct自动生成工具dbreverse的使用步骤。
go get github.com/haming123/dbreverse
cd path/of/dbreverse
go build
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
cd path/of/dbreverse
./dbreverse -t 表名称