Golang实践之博客(四) MySQL安装及GORM的增删查改|Go主题月

1,744 阅读1分钟

前言

今天使用Gin作为orm框架完成增删查改

目标

  • MySQL安装
  • GORM的简单示例

MySQL安装

windows

下载地址:dev.mysql.com/downloads/m…

image.png

跳过,直接下载

image.png

解压文件

image.png

添加环境变量

image.png

在安装目录新建my.ini文件

输入以下内容,注意替换为自己的安装路径

[mysqld]
basedir=E:\Installation\mysql-8.0.21-winx64\
datadir=E:\Installation\mysql-8.0.21-winx64\data\

管理员权限运行cmd

image.png

执行mysqld -install

mysqld -install

image.png

初始化数据文件

mysqld --initialize-insecure --user=mysql

image.png

启动mysql服务

net start mysql

image.png

安装可视化工具MySQL Workbench

下载地址:dev.mysql.com/downloads/w…

image.png

image.png

next->next->install

image.png

image.png

密码为空 image.png

创建blog库 image.png

image.png

GORM的引入与使用

下载GORM及mysql驱动

go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

新增DbService连接到MySQL

package DbService

import (
	"golang-blog/Model/Entity"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

var Db *gorm.DB

func ConnectDb() {
	var (
		err error
	)
	Db, err = gorm.Open(mysql.Open("root:@tcp(127.0.0.1:3306)/blog?charset=utf8&parseTime=True&loc=Local"), &gorm.Config{})
	if err != nil {
		panic(err)
	}

	// 自动生成表结构
	dbErr := Db.AutoMigrate(&Entity.UserEntity{})
	if dbErr != nil {
		println(err)
	}
}

新增实体UserEntity

package Entity

import "gorm.io/gorm"

type UserEntity struct {
	gorm.Model
	Age       int    `form:"age"`
	Password  string `form:"password"`
	LoginName string `form:"loginName"`
	NickName  string `form:"nickName"`
}

func (UserEntity) TableName() string {
	return "User"
}

新增UserService

package UserService

import (
	"golang-blog/Model/Entity"
	"golang-blog/Service/DbService"
)

func ByLoginNameGetUser(loginName string) Entity.UserEntity {
	var (
		user Entity.UserEntity
	)
	DbService.Db.Where(&Entity.UserEntity{LoginName: loginName}).First(&user)
	return user
}

func SignIn(user Entity.UserEntity) string {
	user.Id = "123"
	DbService.Db.Create(&user)
	return user.Id
}

func Update(user Entity.UserEntity) {
	DbService.Db.Model(&Entity.UserEntity{}).Where(&Entity.UserEntity{Id: user.Id}).Updates(user)
}

func Delete(userId string) {
	DbService.Db.Delete(&Entity.UserEntity{}, userId)
}

main调用DbService.ConnectDb

func main() {
	router := gin.Default()
	DbService.ConnectDb()
	Routers.Init(router)
}

启动项目

image.png

自动生成表结构

image.png

调整后的目录结构

image.png

项目地址

github.com/panle666/Go…