当前位置:   article > 正文

【Gin】(五)Go语言ORM框架Gorm-连接MySQL_gin orm

gin orm

一、概述

gorm是一个使用Go语言编写的ORM框架。它文档齐全,对开发者友好,支持主流数据库。 gorm官方中文文档:https://gorm.io/zh_CN/docs/

二、特性

  • 全功能 ORM
  • 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)
  • Create,Save,Update,Delete,Find 中钩子方法
  • 支持 PreloadJoins 的预加载
  • 事务,嵌套事务,Save Point,Rollback To Saved Point
  • Context、预编译模式、DryRun 模式
  • 批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
  • SQL 构建器,Upsert,数据库锁,Optimizer/Index/Comment Hint,命名参数,子查询
  • 复合主键,索引,约束
  • Auto Migration
  • 自定义 Logger
  • 灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…
  • 每个特性都经过了测试的重重考验
  • 开发者友好

三、安装

  1. go get -u gorm.io/gorm
  2. go get -u gorm.io/driver/sqlite
  3. go get -u gorm.io/driver/mysql
  4. go get -u gorm.io/driver/postgres

四、测试连接mysql

1、建表语句

  1. CREATE TABLE `users` (
  2. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  3. `username` varchar(255) NOT NULL COMMENT '用户名',
  4. `password` varchar(255) NOT NULL COMMENT '密码',
  5. `status` enum('active','inactive','deleted') NOT NULL DEFAULT 'active' COMMENT '用户状态',
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
  8. insert into users(username, password) values ('test1', 'test1'),('test2', 'test2'),('test3', 'test3')

2、代码

代码是继续接上一个实例代码

https://blog.csdn.net/forest_long/article/details/139093910

1)创建model

model/UserModel.go

  1. package model
  2. import "gin01/dao"
  3. type UserModel struct {
  4. Id int64 `json:"id" gorm:"primary_key"`
  5. Username string `json:"username"`
  6. Password string `json:"password"`
  7. }
  8. func (UserModel) TableName() string {
  9. return "users"
  10. }
  11. func GetUserInfo(id int) (UserModel, error) {
  12. var user UserModel
  13. err := dao.Db.Where("id = ?", id).First(&user).Error
  14. return user, err
  15. }

2)创建dao

dao/UserDao.go

  1. package dao
  2. import (
  3. "fmt"
  4. "gin01/config"
  5. "github.com/jinzhu/gorm"
  6. _ "github.com/jinzhu/gorm/dialects/mysql"
  7. "time"
  8. )
  9. var (
  10. Db = &gorm.DB{}
  11. err error
  12. )
  13. func init() {
  14. Db, err = gorm.Open("mysql", config.MYSQL_DB)
  15. if err != nil {
  16. fmt.Print("db connect error")
  17. }
  18. if Db.Error != nil {
  19. fmt.Print("db database error")
  20. }
  21. Db.DB().SetMaxIdleConns(10)
  22. Db.DB().SetMaxOpenConns(100)
  23. Db.DB().SetConnMaxLifetime(time.Hour)
  24. }

3)配置文件

config/db.go

  1. package config
  2. const (
  3. MYSQL_DB = "root:abc123456@tcp(127.0.0.1:3306)/test_gorm?charset=utf8mb4&parseTime=True&loc=Local"
  4. )

4)控制器调用

controller/user.go

  1. func (u UserController) GetUserInfo(c *gin.Context) {
  2. idStr := c.Param("id")
  3. //name := c.Param("name")
  4. id, _ := strconv.Atoi(idStr)
  5. user, _ := model.GetUserInfo(id)
  6. //common.RetSuccess(c, http.StatusOK, "success", "id:"+id+" name:"+name, 1)
  7. common.RetSuccess(c, http.StatusOK, "success", user, 1)
  8. }

五、测试

http://localhost:8080/user/info/1/aa

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/1021987
推荐阅读
相关标签
  

闽ICP备14008679号