话不多说,直接使用gorm来玩儿数据库

https://www.topgoer.com/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%93%8D%E4%BD%9C/gorm/gorm%E7%94%A8%E6%B3%95%E4%BB%8B%E7%BB%8D.htmlhttps://www.topgoer.com/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%93%8D%E4%BD%9C/gorm/gorm%E7%94%A8%E6%B3%95%E4%BB%8B%E7%BB%8D.html1、安装 gorm

go get -u github.com/jinzhu/gorm

2、拉入本地

go mod vendor

3、创建 config 目录, mysql.go

package configimport ("fmt"_ "github.com/go-sql-driver/mysql""github.com/jinzhu/gorm""github.com/spf13/viper""log"
)func InitDB() *gorm.DB {// 读取配置文件viper.SetConfigName("env")viper.SetConfigType("toml")viper.AddConfigPath(".")err := viper.ReadInConfig()if err != nil {log.Fatal("read config failed: %v", err)}driverName := "mysql"host := viper.Get("mysql.hostname")port := viper.Get("mysql.port")database := viper.Get("mysql.database")username := viper.Get("mysql.username")password := viper.Get("mysql.password")charset := viper.Get("mysql.charset")args := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true",username,password,host,port,database,charset,)db, err := gorm.Open(driverName, args)if err != nil {panic("failed to connect database,err:" + err.Error())}//自动创建数据表// db.AutoMigrate(&User{})return db
}

4、创建目录 app\model    base.go

package modelimport ("github.com/jinzhu/gorm". "new_gin/config""time"
)var db *gorm.DB// SetPool 设置连接池
func SetPool() {sqlDB := GetDB().DB()// SetMaxIdleConns 设置空闲连接池的最大连接数。sqlDB.SetMaxIdleConns(10)// SetMaxOpenConns 设置到数据库的最大打开连接数。sqlDB.SetMaxOpenConns(100)// SetConnMaxLifetime 设置连接可以重用的最长时间。sqlDB.SetConnMaxLifetime(time.Hour)//sqlDB.Close()
}// OpenDB 开启数据库
func OpenDB() {db = InitDB()
}// GetDB 连接数据库
func GetDB() *gorm.DB {return db
}// CloseDB 关闭数据库
func CloseDB() {db.Close()
}

5、 main.go   开启

package mainimport (. "new_gin/app/model". "new_gin/route"
)func main() {// 连接数据库OpenDB()// 设置连接池SetPool()// 启动路由Route()// 关闭数据库defer CloseDB()
}

6、测试连接 app\controller\user TestMysql

package userimport ("github.com/gin-gonic/gin". "new_gin/app/model"
)type user struct {Uid      uint   `gorm:"primary_key" json:"uid"`Account  string `gorm:"type:varchar(32); not null" json:"account"`Sex      uint   `gorm:"type:tinyint(1); not null" json:"sex"`Phone    string `gorm:"type:varchar(15); not null" json:"phone"`Nickname string `gorm:"type:varchar(20); not null" json:"nickname"`Avatar   string `gorm:"type:varchar(64); not null" json:"avatar"`
}func TestMysql(c *gin.Context) {db := GetDB()var user userdb.Table("mn_user").First(&user)c.JSON(200, gin.H{"data": user,})
}

6、调用接口

连接成功~

GIN 3-封装数据库相关推荐

  1. 在数据仓储的情况下进一步封装数据库基础操作,此版本为异步版本

    1 /// <summary> 2 /// 在数据仓储的情况下进一步封装数据库基础操作,此版本为异步版本 Created by ZhangQC 2016.08.17 3 /// </ ...

  2. 使用XML封装数据库操作语句的实现

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 在项目开发的过程当 ...

  3. php封装数据库操作类,php简单数据库操作类的封装

    本文实例为大家分享了php封装一个简单的数据库操作类,供大家参考,具体内容如下 一.代码 class conndb{ private $local; private $username; privat ...

  4. php 工厂模式封装数据库,PHP设计模式之工厂模式

    概念: 工厂设计模式提供获取某个对象的新实例的一个接口,同时使调用代码避免确定实际实例化基类步骤. 很多高级模式都是依赖于工厂模式. 好处: PHP中能够创建基于变量内容的类的新实例,减少主代码流中的 ...

  5. android uri db,Android ContentProvider封装数据库和文件读写总结

    本文是我各处东拼西凑加上自己实现一个ContentProvider的使用总结,留做后用,主要介绍ContentProvider的集成方法. 一.综述 ContentProvider是Android四大 ...

  6. Python面向对象编程案例:封装数据库增删改查操作

    问题描述:编写一个类,封装对SQLite数据库的增删改查操作,使得数据库操作更加友好,类的使用者不需要了解SQL语句的语法规则,只需要了解类的接口即可. 思考下面的问题,尝试着写一写,然后到达文末查看 ...

  7. php gt lte gte,springdata jpa封装数据库关键字(EQ, LIKE, GT, LT, GTE, LTE,IN)

    数据库关键字申明,类SearchFilter: /*************************************************************************** ...

  8. python封装数据库操作_Python3 数据库操作小封装

    import pymysql ''' SQLController:对数据库操作 私有: __sql_connect(self): 作用:建立数据库连接 返回:数据库连接对象 __sql_insert_ ...

  9. 用JavaBean封装数据库操作

    package lqs; import java.io.*; import java.sql.*; public class myJDBC { private String DBDriver; //J ...

最新文章

  1. python 步进电机_【Applied Motion Products】伺服电机|步进电机也可以python编程啦
  2. 【倒计时19天】腾讯数字生态大会扫除产业数字化的“繁”恼
  3. 01:初识Redis
  4. 查看python库的版本-python中查看第三方库的版本号
  5. 5分钟学会开发浏览器扩展
  6. [CQOI2015]任务查询系统
  7. windows连接远程Hadoop/Spark
  8. python学习-集合(创建、add、remove、discard、与、或、去同、存异)
  9. UML之涉众/参与者(角色/执行者)(Actor)/业务主角(BusinessActor)/业务工人(BusinessWorker)/用户/角色辨析【图解】...
  10. Django连接现有mysql数据库
  11. cisco 热备份路由器协议HSRP笔记
  12. php 判断苹果还是安卓,PHP简单判断iPhone、iPad、Android及PC设备的方法
  13. QEBA:基于类边界查询访问的黑盒攻击
  14. typeorm mysql2_指南 - 使用 TypeORM 和 Express 的示例 - 《TypeORM v0.2.20 中文文档》 - 书栈网 · BookStack...
  15. 视频教程-Linux从入门到精通(全套系列)-Linux
  16. 学生个人网页制作html代码
  17. python制作指定区域截图工具_用python实现选择截图区域
  18. Python基础笔记
  19. 微信防撤回dll文件制作
  20. 请问做亚马逊,注册P卡是用个人名义还是公司名义?

热门文章

  1. 威佐夫博弈matlab,51nod1185 威佐夫游戏 V2 (模拟乘法)
  2. 下一个颠覆的领域:区块链如何影响审计行业?(中)
  3. 考古中怎么判断化石的年代?碳14的半衰期?然后呢?//2021-2-5 知其然,知其所以然。
  4. 关于typedef,指针数组和数组指针,指针函数的说明
  5. 搭建hadoop 集群,出现 Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
  6. MySQL之LIST和LIST COLUMNS分区初探
  7. MySQL命令行登录不上但是sqlyog能成功连接
  8. INT_MAX INT_MIN及其运算
  9. 前端面试题总结-初级
  10. 灵魂画手之——天堂鸟