摘要: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禁用)"`
}