golang学习整合gin和grom框架

本文详细介绍了如何在Go语言项目中使用Gin和Gorm框架进行开发,包括主入口文件中的数据库连接配置,模块路由的组织,以及请求处理函数的实现,还涉及到了HTML模板的使用。
摘要由CSDN通过智能技术生成

1、主main

【1】启动的时候进行加载数据库连接
【2】进行相关gin的操作,并调用总路由

package main

import (
	"fmt"

	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql" //需要引入mysql驱动包,不然会报错
)

/**
【1】新建项目后需要先下载包go get github.com/jinzhu/gorm
【2】需要多引入一个驱动包,直接忽略,不引入程序提示没驱动_ "github.com/jinzhu/gorm/dialects/mysql"
*/

/**
验证打开数据库操作
*/

func main() {
	//打开数据库连接
	//root:123456是用户名和密码
	//@tcp(192.168.11.189:3306)是数据库服务器的IP和端口
	//lztest是自己创建的数据库名称,记得编码格式是utf-8
	//charset=utf8是设置编码格式
	//&parseTime=True 对时间的处理时区设置,与本地时区保持一致
	//&loc=Local 对时区的设置
	db, err := gorm.Open("mysql", "root:123456@tcp(192.168.11.189:3306)/mytest?charset=utf8&parseTime=True&loc=Local")

	//panic当出现错误的时候下面的代码都不需要执行
	if err != nil {
		panic(err)
	}

	//开启控制台打印sql执行语句
	db.LogMode(true)

	fmt.Println("打开数据库成功")
	//释放资源
	//defer是在使用结束后才释放
	defer db.Close()
}

2、数据库连接

【1】数据库连接通过init方法进行加载
注意:
需要将数据库连接返回的内容放置到全局变量中。方便业务逻辑处理函数调用

package dbope

import (
	"fmt"
	"github.com/jinzhu/gorm"
	//加载mysql驱动,
	//如果要链接其他数据库,需要相应数据库的驱动
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

var Db *gorm.DB
var Err error

// init在函数执行之前进行操作
func init() {
	//创建数据库连接

	/*
		//注意在全局变量中进行定义的此处直接赋值。查了半天的错误

		github.com/jinzhu/gorm.(*DB).Unscoped(...)
		//(*DB).Unscoped(...)数据库提示未编码

	*/

	//Db, Err = gorm.Open("mysql", "root:123456@tcp(192.168.11.189:3306)/lztest?charset=utf8&parseTime=True&loc=Local")
	Db, Err = gorm.Open("mysql", "root:123456@tcp(192.168.3.64:3306)/mytest?charset=utf8&parseTime=True&loc=Local")

	//如果数据库连接失败了下面的代码就不在执行了
	if Err != nil {
		panic(Err)
	}

	//开启数据库打印日志
	Db.LogMode(true)

	fmt.Println("我的数据库连接成功了")
	fmt.Println(Db)
}

3、总路由

【1】总路由根据业务模块分组,并调用各业务模块路由

package Router

import (
	"GORM_Demo04/part11/Router/User"
	"github.com/gin-gonic/gin"
)

/*
*总路由
 */
func Adj_Router(r *gin.Engine) {

	//划分模块路由
	//用户模块路由组
	u := r.Group("/user") //用户的模块

	//调用用户模块路由组
	User.Router(u)

}

4、模块路由

【1】业务模块路由进行处理请求地址,并调用请求处理函数

package User

import "github.com/gin-gonic/gin"

func Router(g *gin.RouterGroup) {

	//POST提交调用"/okuser"路由处理
	g.POST("/okuser", SubmitUser)
}

5、请求处理函数

【1】请求响应函数获取请求参数,并跟局请求方式进行响应相关信息到客户端

package User

import (
	"GORM_Demo04/part11/dbope"
	"GORM_Demo04/part11/pojo"
	"fmt"
	"github.com/gin-gonic/gin"
)

/**
*处理的业务逻辑
 */
func SubmitUser(context *gin.Context) {
	//获取表单提交数据
	uname := context.PostForm("uname")
	password := context.PostForm("password")
	fmt.Println(uname + "---------" + password)

	user := pojo.User{
		UName:    uname,
		Password: password,
	}

	fmt.Println(user)

	defer dbope.Db.Close()
	//判断数据表是否存在
	flog := dbope.Db.HasTable(&pojo.User{})
	//不存在进行创建
	if flog == false {
		dbope.Db.CreateTable(&pojo.User{})
	}

	//向数据库表中添加数据
	dbope.Db.Create(&user)

	context.HTML(200, "demo01/user.html", gin.H{
		"user": user,
	})
}

6、用户实例

package pojo

type User struct {
	UName    string
	Password string
}

7、HTML文件

1、index.html

{{define "demo01/index.html"}}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    这是我的index的界面

    <form action="/user/okuser" method="post">
       用户名: <input type="text" name ="uname" ><br>
       密 码: <input type="password" name ="password" ><br>
        <input type="submit" value ="提交">
    </form>
</body>
</html>

{{end}}

2、user.html

{{define "demo01/user.html"}}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

{{.}}
    你好我是user.html
</body>
</html>
{{end}}

访问localhost:8080,表单提交数据即可创建表并插入数据

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值