前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >数据库Go-gorm实战

数据库Go-gorm实战

原创
作者头像
爽朗地狮子
发布于 2022-10-20 03:24:38
发布于 2022-10-20 03:24:38
4730
举报
文章被收录于专栏:云原生系列云原生系列

安装环境

go get -u github.com/jinzhu/gorm

一. model结构体

在线转换

https://printlove.cn/tools/sql2gorm

model的结构:

代码语言:txt
AI代码解释
复制
package model

import (
   "database/sql"
)

type User_Gorm struct {
   UserId    int          `gorm:"column:user_id;type:int(11);primary_key" json:"user_id"`
   UserName  string       `gorm:"column:user_name;type:varchar(60);NOT NULL" json:"user_name"`
   Password  string       `gorm:"column:password;type:varchar(32)" json:"password"`
   Sex       int          `gorm:"column:sex;type:int(11)" json:"sex"`
   Birthday  sql.NullTime `gorm:"column:birthday;type:timestamp" json:"birthday"`
   LastLogin sql.NullTime `gorm:"column:last_login;type:timestamp" json:"last_login"`
   BindPhone string       `gorm:"column:bind_phone;type:varchar(20)" json:"bind_phone"`
   RegTime   sql.NullTime `gorm:"column:reg_time;type:timestamp" json:"reg_time"`
}

二. 执行语句

代码语言:txt
AI代码解释
复制
package order

import (
   "database/sql"
   "fmt"
   "sql-operator/model"
   "time"

   "github.com/jinzhu/gorm"
   _ "github.com/jinzhu/gorm/dialects/mysql"
)

var gorm_db *gorm.DB

func ConnectGormDatabases() {
   //"用户名:密码@[连接方式](主机名:端口号)/数据库名"
   var err error
   gorm_db, err = gorm.Open("mysql", "root:Xcy3329257@(localhost)/db_common?charset=utf8mb4&parseTime=True&loc=Local")
   if err != nil {
      fmt.Println("gorm数据库连接成功")
      panic(err)
   }
}

func CloseGormDatabases() {
   gorm_db.Close()
}

func SelectGormUser() {
   var users []model.User_Gorm
   // Get all records
   result := gorm_db.Find(&users)
   println("查找到的result数目" + fmt.Sprintf("%d", result.RowsAffected))
   for i := 0; i < len(users); i++ {
      fmt.Printf("i=%d value=%v \n", i, users[i])
   }
}

func InsertGormUser() {
   //user := model.User{UserId: 13, UserName: "tomxiang10", Password: "admin10", Sex: 1, Birthday: sql.NullTime{time.Now(), true}, LastLogin: sql.NullTime{time.Now(), true}, BindPhone: "15817304444", RegTime: sql.NullTime{time.Now(), true}}
   user := model.User_Gorm{UserName: "tomxiang10", Password: "admin10", Sex: 1, Birthday: sql.NullTime{time.Now(), true}, LastLogin: sql.NullTime{time.Now(), true}, BindPhone: "15817304444", RegTime: sql.NullTime{time.Now(), true}}
   gorm_db.Create(&amp;user)
}

func DeleteGormUser() {
   var user model.User_Gorm
   gorm_db.Where("user_id = ?", 14).Take(&amp;user)
   gorm_db.Delete(user)
}

func UpdateGormUser() {
   var user model.User_Gorm
   //查找user_id=13
   gorm_db.Where("user_id = ?", 13).Take(&amp;user)
   //修改为当前时间
   user.Birthday = sql.NullTime{time.Now(), true}
   user.RegTime = sql.NullTime{time.Now(), true}
   user.LastLogin = sql.NullTime{time.Now(), true}
   gorm_db.Save(user)
}

参考链接

  1. gorm官网

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
数据库Go-sqlx实战
一. 命令行安装go get github.com/jmoiron/sqlx二. model设计package modelimport "time"type User_Sqlx struct { UserId int `db:"user_id"` UserName string `db:"user_name"` Password string `db:"password"` Sex int `db:"sex"` Birthday
爽朗地狮子
2022/10/20
5290
golang中使用gorm写入time.Time的类型时间问题
当我们使用golang来构建一个web应用或者其他使用到数据库的应用的时候,通常会选择使用gorm库。主要原因还是因为gorm库操作方便,简单易用。
KunkkaWu
2024/03/27
4.5K0
聊聊gorm的DeletedAt
gorm.io/gorm@v1.20.10/schema/interfaces.go
code4it
2021/01/09
9220
聊聊gorm的DeletedAt
写了一个 gorm 乐观锁插件
最近在用 Go 写业务的时碰到了并发更新数据的场景,由于该业务并发度不高,只是为了防止出现并发时数据异常。
crossoverJie
2022/10/27
7860
写了一个 gorm 乐观锁插件
Gorm
自动迁移仅仅会创建表,缺少列和索引,并且不会改变现有列的类型或删除未使用的列以保护数据。
TomatoCool
2023/10/16
3740
Go gorm
在后端开发上,通常都要与资料库做操作(新增、修改、删除、查找),后端会撰写 SQL 语句,并且透过一些工具或套件(例如:pymysql)向 SQL 资料库来做沟通。而撰写原生 SQL 的缺点为:
f1sh
2024/07/29
1540
Go之Gorm和BeegoORM简介及配置使用
简介 ORM Object-Relationl Mapping, 它的作用是映射数据库和对象之间的关系,方便我们在实现数据库操作的时候不用去写复杂的sql语句,把对数据库的操作上升到对于对象的操作 Gorm gorm就是基于Go语言实现的ORM库。 类似于Java生态里大家听到过的Mybatis、Hibernate、SpringData等。 下载使用Gorm库 下载gorm库 go get -u github.com/jinzhu/gorm // 这是比较原始的方式,现在有了go mod,我
iginkgo18
2020/09/27
1.8K0
day5 | 设计模式之Database/SQL与GORM实践 | 第三届字节跳动青训营笔记
https://dev.mysql.com/doc/internals/en/client-server-protocol.html
千羽
2022/11/11
8320
day5 | 设计模式之Database/SQL与GORM实践 | 第三届字节跳动青训营笔记
Go 使用 Gorm 操作 MySQL 数据库
在实际开发中,要用到数据库存储数据。MySQL是一个关系型数据库管理系统 使用非常广泛。在Go语言开发中,会选择一个操作数据的类库来帮助我们完成工作。
张云飞Vir
2020/04/01
6.2K0
Gorm 使用
使用 ORM 工具,通常需要在代码中定义模型(Models)与数据库中的数据表进行映射, 在 GORM 中模型(Models)通常是正常的结构体、基本的 go 类型或他们的指针,同时也支持 sql.Scanner 与 driver.Valuer 接口(interfaces)
王小明_HIT
2021/03/27
1.7K0
Gorm框架学习---CRUD接口之创建
要有效地插入大量记录,请将一个 slice 传递给 Create 方法。 GORM 将生成单独一条SQL语句来插入所有数据,并回填主键的值,钩子方法也会被调用。
大忽悠爱学习
2022/09/23
1.3K0
Gorm框架学习---CRUD接口之创建
Go语言ORM-gorm学习笔记(一)
模型(Models)通常只是正常的golang structs、基本的go类型或它们的指针。同时也支持sql.Scanner及driver.Valuer接口(interfaces)。
frank.
2020/07/24
1.6K0
Gorm实战,轻松掌握数据库增删改查技巧!
CRUD通常指数据库的增删改查操作,本文详细介绍了如何使用GORM实现创建、查询、更新和删除操作。
贾维斯Echo
2024/01/12
3.5K0
Go项目重构经验分享——ORM框架实践
本文介绍了笔者在重构一个 Go 项目的实践经验,老项目由于迭代速度快,导致了接口杂乱,结构扁平,代码耦合度高等问题,在项目复杂度增加的情况下不再适合扩展,因此对整个项目进行了重构。篇幅有限,本文主要介绍 ORM 层的重构。
siri
2023/09/25
7460
Go组件学习——gorm四步带你搞定DB增删改查
  Object-Relationl Mapping, 它的作用是映射数据库和对象之间的关系,方便我们在实现数据库操作的时候不用去写复杂的sql语句,把对数据库的操作上升到对于对象的操作。
JackieZheng
2019/08/06
4.3K0
一文入门gorm和xorm的基本操作(CRUD)
GORM 官方支持的数据库类型有: MySQL, PostgreSQL, SQlite, SQL Server
用户6297767
2023/11/21
5960
一文带你了解 GORM Model
GORM内置了一个gorm.Model结构体。gorm.Model是一个包含了ID, CreatedAt, UpdatedAt, DeletedAt四个字段的Golang结构体。
程序员海军
2023/11/29
7860
一文带你了解 GORM Model
Go语言微服务框架 - 4.初识GORM库
数据持久化是服务的必要特性,最常见的组件就是关系型数据库MySQL。而在Go语言里,GORM已经成了对接MySQL事实上的标准,那么也就不去横向对比其它库了。
junedayday
2021/09/24
1.6K0
Gorm 实践指南
GORM 默认的数据更新、创建都在事务中,如无必要,可以关闭默认的事务,获得更大的性能提升, 事务的全局性或者临时关闭,即使在关闭默认事务,仍然可以通过方法 Begin, Transactions 方法开启事务。
王小明_HIT
2021/07/05
2.3K0
GORM CRUD 10 分钟快速上手
ORM(Object Relational Mapping),中文名为对象关系映射。
恋喵大鲤鱼
2023/10/12
7360
相关推荐
数据库Go-sqlx实战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档