go语言整合gin+gorm并将数据插入数据库

进行编写的时候所有的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()
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值