字节青训营抖音大项目实践主要用到了GIN 和 GORM进行路由管理和数据库操作。由于给出的demo中有了初始化一些代码,所以只需要从配置开始即可。
安装
安装 gin
go get -u github.com/gin-gonic/gin
项目整体架构,是go语言的http服务架构,可以进行路由绑定如router.GET("/", index)表示用GET方式接收路由,如果路由是根目录,那么直接执行index控制器方法,index控制器必须含有gin.Context参数,也可以向上面一样将index控制器的内容写成匿名函数。
除了基本路由外还支持路由组、异步调用等功能、
安装 gorm
go get -u gorm.io/gorm
用来连接数据库,并进行数据库增删改查的操作。
安装 ini 解析包
go get -u gopkg.in/ini.v1
用来解析config.ini的配置文件。
配置
配置文件 config.ini
在项目根目录下新建config文件,config下创建config.ini配置文件 存放连接数据库的配置信息如host、username、password等; 存放项目配置信息如端口等; 存放redis配置信息等;
[app]
Port=8080
[mysql]
db_name = "" # 数据库名字
db_user = "" # 用户名
db_pwd = "" # 密码
db_host = "127.0.0.1"
db_port = 3306
db_charset = "utf8"
配置读取文件
在config文件夹下创建conf.go文件用来读取ini配置文件并将其放在Config结构体中,以便后续调用。
type Config struct {
Port string
MySql Mysql
}
数据库
数据库结构体
type Mysql struct {
DbUser string `json:db_user`
DbName string `json:db_name`
DbPwd string `json:db_pwd`
DbHost string `json:db_host`
DbPort string `json:db_port`
DbCharset string `json:db_charset`
}
初始化连接数据库
dataSource := Config.MySql.DbUser + ":" + Config.MySql.DbPwd + "@tcp(" + Config.MySql.DbHost + ":" + Config.MySql.DbPort + ")/" + Config.MySql.DbName + "?charset=" + Config.MySql.DbCharset + "&parseTime=true"
DB, err := gorm.Open(mysql.Open(dataSource), &gorm.Config{
PrepareStmt: true, //缓存预编译命令
SkipDefaultTransaction: true, //禁用默认事务操作
})
if err != nil {
log.Fatalf("Fail to connect DB: %v", err)
}
// 数据库表动态迁移
DB.AutoMigrate(&model.User{})
在连接数据库时可以选择数据库的类型,上面代码中选择的是mysql,所以需要提前安装gorm.io/driver/mysql驱动,然后在gorm.Config中进行一些配置。
然后gorm有数据迁移的功能,可以使用AutoMigrate建立对应的数据库表,只需要在定义User结构体的时候使用 gorm:"column:id"进行标识对应数据表列的名字。