摘要:beego框架中的数据库学习(环境安装、数据库配置、数据库连接、建表【模型】、模型属性)
一、MySQL安装
https://www.mysql.com/downloads/
二、navicat安装
https://cloud.tencent.com/developer/article/1804255
三、beego中使用orm
1、下载安装依赖:
go get github.com/astaxie/beego/orm
go get github.com/go-sql-driver/mysql
2、连接MySQL并新建数据库

3、配置数据库信息
//mysql.conf
username = root
password = 123456
port = 3306
host = 127.0.0.1
database = beego_project
4、数据库注册
//main.go
func init() {
// 读取配置信息
username := beego.AppConfig.String("username")
password := beego.AppConfig.String("password")
port := beego.AppConfig.String("port")
host := beego.AppConfig.String("host")
database := beego.AppConfig.String("database")
//注册mysql Driver
orm.RegisterDriver("mysql", orm.DRMySQL)
//构造conn连接
//用户名:密码@tcp(url地址)/数据库
conn := username + ":" + password + "@tcp(" + host + ":" + port + ")/" + database + "?charset=utf8"
//注册数据库连接
orm.RegisterDataBase("default", "mysql", conn)
fmt.Printf("数据库连接成功!%s\n", conn)
}
orm.RegisterDataBase("default", "mysql", "用户名:密码@tcp(IP:端口号)/数据库?charset=utf8", 30)
- 参数一:数据库的别名,用来在 ORM 中切换数据库使用
- 参数二:驱动名称
- 参数三:对应的链接字符串
参数四(可选):设置最大空闲连接
- 或根据数据库别名设置:orm.SetMaxIdleConns("default", 30)
参数五(可选):设置最大数据库连接
- 或根据数据库别名设置: orm.SetMaxOpenConns("default", 30)
5、模型注册

//model.go
type User struct{
Id int
Name string
Age int
Addr string
}
func init(){
orm.RegisterModel(new(User))
}
//main.go
_ "beeProject/models/chapter05"
func main(){
orm.RunCommand()
beego.Run()
}
6、建表
① 命令行建表
输入下面的命令我们可以看到命令行返回的提示信息
go run main.go orm

// 将表格迁移到数据库
go run main.go orm syncdb
② 自动建表
// main.go
func init(){
name := "default"
force := false
verbose := true
err := orm.RunSyncdb(name,force,verbose)
if err != nil{
fmt.Println(err)
}
}
7、模型属性
//自定义表名
func (u *User) TableName() string{
return "user_test_table"
}

设置模型属性(表属性)
type User struct{
//pk:主键 auto:自动递增
Id int `orm:"pk:auto"`
//index:数据库索引
Name string `orm:"index"`
//column:改变列名
Age int `orm:"column(user_age)"`
//对于小数的处理,digits表示总长度,decimals表示小数点后有几位
Money float64 `orm:"digits(12);decimals(2)"`
//size:适用于string类型,限制其长度
Addr string `orm:""size(20)`
// _ :表示建表时忽略该字段
test string `orm:"_"`
//auto_now 每次 model 保存时都会对时间自动更新
//auto_now_add 第一次保存时才设置时间
//type:日期或是时间(date/datetime)
Created time.Time `orm:"auto_now_add;type(datetime)"`
//default:初始值,description:对字段的描述
Statue string `orm:"default(1);description(状态,1启用,2禁用)"`
}
