使用Gin框架和sqlx实现一下 Golang MVC

浅浅尝试一下Golang MVC,实现解耦合

在这里插入图片描述

1.Util包–>connect.go

用于连接数据库
package Util

import (
	"fmt"
	_ "github.com/jinzhu/gorm/dialects/mysql"//一定要导入这个呀!
	"github.com/jmoiron/sqlx"
	"time"
)
var db *sqlx.DB
func Connect() *sqlx.DB{
	db, err := sqlx.Connect("mysql", "root:XXXXXX@(XXXXXXX:3306)/test?charset=utf8mb4&parseTime=True&loc=Local")
	if err != nil {
		fmt.Println(err)
	}
	db.SetConnMaxLifetime(time.Second * 10)
	db.SetMaxOpenConns(20) // 设置与数据库建立连接的最大数目
	db.SetMaxIdleConns(10) // 设置连接池中的最大闲置连接数
	return db
}

2.pojo包–>Text.go

在这里插入图片描述

结构体(实体类)
package pojo

type Text struct {
	Question string `db:"question"`
	Answer string `db:"answer"`
	OptionA string `db:"optionA"`
	OptionB string `db:"optionB"`
	OptionC string `db:"optionC"`
	OptionD string `db:"optionD"`
	No string `db:"no"`
}

3.Dao包–>testDao.go

具体方法实现(用sqlx在数据库操作)
package Dao

import (
	"awesomeProject/Util"
	"awesomeProject/pojo"
	"fmt"
)
var db=Util.Connect()
func Delete() {
	sqlStr := "delete from danxuan where no = ?"
	ret, err := db.Exec(sqlStr, 10087)
	if err != nil {
		fmt.Printf("delete failed, err:%v\n", err)
		return
	}
	n, _ := ret.RowsAffected() // 操作影响的行数
	fmt.Printf("删除成功, affected rows:%d\n", n)
}
func Update() {
	sqlStr := "update danxuan set question=? where no = ?"
	ret, err := db.Exec(sqlStr, "修改了呀", 10087)
	if err != nil {
		fmt.Printf("更新失败, err:%v\n", err)
		return
	}
	n, _ := ret.RowsAffected() // 操作影响的行数
	fmt.Printf("update success, affected rows:%d\n", n)
}
func Select() ([] pojo.Text) {
	var text[] pojo.Text
	sql:="select * from danxuan limit 5"
	_ = db.Select(&text,sql)
	return text
}
func Insert() {
	sqlStr := "insert into danxuan values (?,?,?,?,?,?,?)"
	_, err := db.Exec(sqlStr, 10087,"你好","A.123","B.456","C.789","D.123","C")
	if err != nil {
		fmt.Printf("插入失败, err:%v\n", err)
		return
	}
	fmt.Printf("插入成功 %d.\n")
}

4.Controller–>testController.go

接口实现(Gin框架)
package Controller

import (
	"awesomeProject/Dao"
	"github.com/gin-gonic/gin"
)

func TextController()  {
	r:=gin.Default()
	r.GET("/test", func(context *gin.Context) {
			context.JSON(200,gin.H{
				"message":Dao.Select(),
			})
	})
	_ = r.Run(":8080")
}

5.启动go

package main

import (
	"awesomeProject/Controller"
	_ "awesomeProject/Controller"
)
func main()  {
	Controller.TextController()
}

在这里插入图片描述
成功啦!

6.注意事项

一定要保证项目目录下有go.mod文件,External Libraries下有Go Modules<文件名>
go mod init

go mod tidy

解决go build报错cannot find main module; see 'go help modules’查看一下

https://blog.csdn.net/u011897301/article/details/105758056/

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

面向结果编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值