orm-连接和创建数据库
orm-连接和创建数据库
本节知识点
-连接数据库
-创建模型和自动建表
-模型属性
https://beego.me/docs/mvc/model/query.md
关于orm 的数据库增删改查 查阅官方文档即可
连接数据库
需要先安装mysql
import
github.com/astaxie/beego/orm
_github.com/go-sql-driver/mysql
_导入表模型的路径
go mod vendor 导入包
连接数据库
main.go
func init() {
//获取app.conf 中的配置
MysqlUser := beego.AppConfig.String("MysqlUser")
MysqlHost := beego.AppConfig.String("MysqlHost")
MysqlPassword := beego.AppConfig.String("MysqlPassword")
MysqlPort := beego.AppConfig.String("MysqlPort")
MysqlDatabase := beego.AppConfig.String("MysqlDatabase")
//从某一版本开始,驱动默认使用 UTC 时间,而非本地时间,所以请指定时区参数或者全部以 UTC 时间存取
//时区要么统一指定 UTF-8 时区 要么使用本地时区
dataSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&loc=Local",
MysqlUser,
MysqlPassword,
MysqlHost,
MysqlPort,
MysqlDatabase)
//fmt.Println(" : " + dataSource) 打印连接地址
//注册数据库驱动
orm.RegisterDriver("mysql", orm.DRMySQL)
//连接数据库,
//"default"-数据库别名
//用于区分多个数据库连接,必须要有一个default
orm.RegisterDataBase("default", "mysql", dataSource)
//自动建表
//在beego.run 前调用orm.RunCommand()
//需要先实现数据表模型,见下面model/m_user.go
//参数一:数据库
//参数二:表存在时是否删除重建
//参数三:打印建表信息
err := orm.RunSyncdb("default", false, true)
if err != nil {
panic(err)
}
}
创建数据表模型
model/m_user.go
//1.创建模型
//user 结构体成员首字母大写
type user struct {
//模型定义
ID int `orm:"pk;auto;column(ID)"` //设置主键自增长
Name string `orm:"unique;null"`
Age int `orm:"null"`
Addr string `orm:"column(Address);null"`
UpdatedTime time.Time `orm:"auto_now;type(datetime)"`
/*
`orm:"-"` 忽略字段
`orm:"default(n)"` 设置默认值
`orm:"null"` 允许为null
`orm:"index"` 添加索引
`orm:"unique"` 设置值不允许重复
`orm:"column(Alias)"` 别名
`orm:"size(n)"`` 定义string长度
`orm:"digits(n);decimals(n)" 数字总长度;小数长度
`orm:"description(注释)"` 添加注释
CreatedTime time.Time `orm:"auto_now_add;type(datetime)"` 第一次保存时设置时间
UpdatedTime time.Time `orm:"auto_now;type(datetime)"` 每次model保存时都会对时间自动更新
*/
}
//2.注册模型
func init() {
//把结构体注册为模型
orm.RegisterModel(new(user))
}
//3.设置表名
func (u *user) TableName() string {
return "blog_user"
}
/*
自动建表
前提:
orm.RegisterDataBase 已注册数据库
orm.RegisterDataBase 已注册模型
在main.go中引入模型的包
在beego.run 前调用orm.RunCommand()
建表
方法一:命令行创建
go run main.go orm
方法二:代码创建
orm.RunSyncdb()
模型名和表名映射规则:
除了开头字的大写字母以外,遇见大写子前会增加_,并且改为小写
eg:
User->User
UUser->U_user
一般使用自定义表名
*/

浙公网安备 33010602011771号