进行编写的时候所有的import可以自行修改
main页面的编写
package main
import (
"github.com/gin-gonic/gin"
"handitem/xxb-gin-web/global"
"handitem/xxb-gin-web/initilization"
"handitem/xxb-gin-web/model/user"
)
func main() {
//1、读取配置文件
initilization.InitViper()
//2.初始化中间 redis/mysql/mongodb
initilization.InitMySQL()
}
初始化gorm
项目文件下创建initilization包,包下创建init_gorm.go文件
这里还需要读取mysql的配置信息,利用结构体的dsn方法读取主要的配置
package initilization
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"handitem/xxb-gin-web/commons/orm"
"handitem/xxb-gin-web/global"
)
func InitMySQL() {
// 获取mysql对象
m := global.Config.Database.Mysql
db, err := gorm.Open(mysql.New(mysql.Config{
DSN: m.Dsn(), // DSN data source name
DefaultStringSize: 191, // string 类型字段的默认长度
DontSupportRenameIndex: true, // 重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引
DontSupportRenameColumn: true, // 用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列
SkipInitializeWithVersion: false, // 根据当前 MySQL 版本自动配置
}))
// 如果报错
if err != nil {
panic("数据连接出错了" + err.Error()) // 把程序直接阻断,把数据连接好了在启动
}
// 将db赋值给全局变量,适合以后操作数据库时直接使用
global.KSD_DB = db
// 初始化数据库表
orm.RegisterTable()
fmt.Println("数据库连接成功。开始运行!")
}
数据库表的注册
注册数据库表 在项目文件下commons包下创建orm包,包下创建registertable.go文件
以后得数据表就在这里创建
package orm
import (
"handitem/xxb-gin-web/global"
"handitem/xxb-gin-web/model/user"
)
func RegisterTable() {
db := global.KSD_DB
// 注册和声明model
db.AutoMigrate(&user.User{})
}
定义数据模型
在文件包下创建model包,包下创建user包,user包下创建user.go文件
定义模型 TableName方法是用来给生成的表创建表名
package user
import (
"gorm.io/gorm"
"time"
)
type User struct {
ID uint `gorm:"primaryKey"json:"id"`
Name string `json:"name"`
Account string `gorm:"unique"json:"account"`
Password string `json:"password"`
Email *string `json:"email"`
Age uint8 `json:"age"`
Birthday time.Time `json:"birthday"`
CreatedAt time.Time `gorm:"autoUpdateTime"json:"createAt"`
UpdatedAt time.Time `gorm:"autoUpdateTime"json:"updatedAt"`
DeletedAt gorm.DeletedAt `gorm:"index"`
}
// 覆盖生成表
func (User) TableName() string {
return "xk_admin_user"
}
将伪造的数据插入数据库
最后的main文件,执行一次数据库的create操作 将信息写入数据库
最后访问localhost:8080/hello 就会将创建的h数据插入到数据库
main.go
package main
import (
"github.com/gin-gonic/gin"
"handitem/xxb-gin-web/global"
"handitem/xxb-gin-web/initilization"
"handitem/xxb-gin-web/model/user"
)
func main() {
//1、读取配置文件
initilization.InitViper()
//2.初始化中间 redis/mysql/mongodb
initilization.InitMySQL()
// 创建一个默认的路由引擎
r := gin.Default()
// GET:请求方式;/hello:请求的路径
// 当客户端以GET方法请求/hello路径时,会执行后面的匿名函数
r.GET("/hello", func(c *gin.Context) {
// c.JSON:返回JSON格式的数据
c.JSON(200, gin.H{
"message": "Hello world!",
})
h := user.User{Name: "haha"}
// 这里的Model是用来绑定数据库对应的表的
global.KSD_DB.Model(&user.User{}).Create(&h)
})
// 启动HTTP服务,默认在0.0.0.0:8080启动服务
r.Run()
}