当前位置: 首页 > news >正文

使用 GORM 与 MySQL 数据库进行交互来实现增删改查(CRUD)操作

1、安装 GORM 和 MySQL 驱动

新版本库是gorm.io/gorm

go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
2、连接 MySQL 数据库
package mainimport ("gorm.io/driver/mysql""gorm.io/gorm""log"
)func main() {// 数据源名称 (DSN) 格式:username:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Localdsn := "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {log.Fatalf("failed to connect database: %v", err)}log.Println("Connected to the MySQL database successfully.")
}

请根据实际情况替换 dsn 中的 user, password, 127.0.0.1:3306, dbname

3、定义模型

定义一个简单的模型,例如 Product,用于映射到数据库表。

type Product struct {gorm.ModelCode  stringPrice uint
}

这里的 gorm.Model 包含了 ID、CreatedAt、UpdatedAt 和 DeletedAt 字段。

4、完整示例
package mainimport ("log""gorm.io/driver/mysql""gorm.io/gorm"
)type Product struct {gorm.ModelCode  stringPrice uint
}func main() {dsn := "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {log.Fatalf("failed to connect database: %v", err)}log.Println("Connected to the MySQL database successfully.")// 自动创建或迁移表db.AutoMigrate(&Product{})// 创建product := Product{Code: "D42", Price: 100}result := db.Create(&product)if result.Error != nil {log.Fatalf("Failed to create record: %v", result.Error)} else {log.Printf("Created product with ID: %d", product.ID)}// 查询var retrievedProduct Productif err := db.First(&retrievedProduct, 1).Error; err != nil {log.Printf("Product not found: %v", err)} else {log.Printf("Found product: %+v", retrievedProduct)}// 更新product.Price = 150result = db.Save(&product)if result.Error != nil {log.Fatalf("Failed to update record: %v", result.Error)} else {log.Printf("Updated product: %+v", product)}// 删除result = db.Delete(&product)if result.Error != nil {log.Fatalf("Failed to delete record: %v", result.Error)} else {log.Printf("Deleted product with ID: %d", product.ID)}
}

在这里插入图片描述

在这里插入图片描述

相关文章:

使用 GORM 与 MySQL 数据库进行交互来实现增删改查(CRUD)操作

1、安装 GORM 和 MySQL 驱动 新版本库是gorm.io/gorm go get -u gorm.io/gormgo get -u gorm.io/driver/mysql2、连接 MySQL 数据库 package mainimport ("gorm.io/driver/mysql""gorm.io/gorm""log" )func main() {// 数据源名称 (DSN) 格式&a…...

Day2 生信新手笔记: Linux基础

一、基础知识 1.1 服务器 super computer 或 server 1.2 组学数据分析 组学数据:如基因组学、转录组学、蛋白质组学等; 上游分析:主要涉及原始数据的获取和初步处理,计算量大,消耗的资源较多,在服务器完…...

001集—— 创建一个WPF项目 ——WPF应用程序入门 C#

本例为一个WPF应用&#xff08;.NET FrameWork&#xff09;。 首先创建一个项目 双击xaml文件 双击xaml文件进入如下界面&#xff0c;开始编写代码。 效果如下&#xff1a; 付代码&#xff1a; <Window x:Class"WpfDemoFW.MainWindow"xmlns"http://schema…...

【C++】1___引用

一、基本语法 数据类型 &别名 原名 #include<iostream> using namespace std; int main(){int a 10;int &b a;cout<<"a"<<a<<endl; // a10cout<<"b"<<b<<endl;// a10b 20;cout<<"a…...

如何通过 JWT 来解决登录认证问题

1. 问题引入 在登录功能的实现中 传统思路&#xff1a; 登录页面时把用户名和密码提交给服务器服务器验证用户名和密码&#xff0c;并把检验结果返回给后端如果密码正确&#xff0c;则在服务器端创建 session&#xff0c;通过 cookie 把 session id 返回给浏览器 但是正常情…...

高效集成:将聚水潭数据导入MySQL的实战案例

聚水潭数据集成到MySQL&#xff1a;店铺信息查询案例分享 在数据驱动的业务环境中&#xff0c;如何高效、准确地实现跨平台的数据集成是每个企业面临的重要挑战。本文将聚焦于一个具体的系统对接集成案例——将聚水潭的店铺信息查询结果集成到MySQL数据库中&#xff0c;以供BI…...

Jenkins-基于 JNLP协议的 Java Web 启动代理

在上一篇的基础配置上进行以下步骤 工作流程&#xff1a; 通过 JNLP 启动代理&#xff0c;客户端从 Jenkins 服务器上下载一个 agent.jar 文件。该文件启动时&#xff0c;代理程序通过 JNLP 协议连接到 Jenkins 主节点。一旦连接成功&#xff0c;代理节点就可以执行从主节点分…...

Qt数据库操作-QSqlQueryModel 的使用

QSqlQueryModel 功能概述 QSqlQueryModel 是 QSqlTableModel 的父类。QSqlQueryModel 封装了执行 SELECT 语句从数据库查询数据的功能&#xff0c;但是 QSqlQueryModel 只能作为只读数据源使用&#xff0c;不可以编辑数据。QSqlQueryModel 类的主要函数如下&#xff1a; 接口…...

C语言编程1.21波兰国旗问题

题目描述 桌上有 n ( 1 < n < 10000 ) 面小旗&#xff0c;一部分是白旗&#xff0c;一部分是红旗(波兰国旗由白色和红色组成)。唯一允许的操作是交换两面小旗位置。请你设计一个算法&#xff0c;用最少的交换操作将所有的白旗都置于红旗的之前。 输入格式 第一行为一个…...

如何利用微型5G网关为智慧无人矿车提供精确定位

随着5G、AI、物联网技术的发展和普及&#xff0c;越来越多行业正在加快生产、运营、管理的无人化、数字化与智能化&#xff0c;以适应当前我国“智慧、绿色、低碳”的新型发展模式需要。其中矿产业就是典型场景之一。针对矿山场景的智慧化、无人化转型&#xff0c;佰马提供基于…...

使用docker-compese部署SFTPGo详解

官网&#xff1a;SFTP & FTP as a Managed Service (SaaS) and On-premise 一、SFTPGo简介 SFTPGo 是一款功能强大的文件传输服务器软件。它支持多种协议&#xff08;SFTP、SCP、FTP/S、WebDAV、HTTP/S&#xff09;和多个存储后端。 借助 SFTPGo&#xff0c;您可以利用本地…...

Ajax基础总结(思维导图+二维表)

一些话 刚开始学习Ajax的时候&#xff0c;感觉很模糊&#xff0c;但是好像学什么都是这样的&#xff0c;很正常&#xff0c;但是当你学习的时候要持续性敲代码&#xff0c;边敲代码其实就可以理解很多了。然后在最后的总结&#xff0c;其实做二维表之后&#xff0c;就可以区分…...

Spring Task和WebSocket使用

在现代 Web 应用中&#xff0c;WebSocket 作为一种全双工通信协议&#xff0c;为实时数据传输提供了强大的支持。若要确保 WebSocket 在生产环境中的稳定性和性能&#xff0c;使用 Nginx 作为反向代理服务器是一个明智的选择。本篇文章将带你了解如何在 Nginx 中配置 WebSocket…...

微信小程序 本地调试和vconsole可以 但在体验上页面不请求数据

微信小程序页面不请求数据 本地调试和vconsole可以 但在体验版页面不请求数据&#xff0c;如遇到这类问题基本都是一样的解决办法 1、如何调试找到问题 首先要把小程序本地设置的不校验合法域名关掉&#xff0c;不然本地一直都是好的 然后通过本地真机调试打断点找到问题位…...

QT:将QTableWidget内容写入txt文件中

文章详请&#xff1a;最近在做手在眼上的标定&#xff0c;首先要采集机械臂数据和图像数据&#xff0c;我使用tablewidget进行机械臂数据的显示&#xff0c;最后的计算需要将机械臂位姿数据存储在txt文件中。 引用&#xff1a;Qt如何保存tableWidget数据&#xff1f;_qt table…...

前端面试题(六)

1.let,var,const区别 1.作用域&#xff1a;  var&#xff1a;var声明的变量存在函数作用域或全局作用域&#xff0c;这意味着它们在声明它们的函数内部可见&#xff0c;而不在块级作用域内可见。 let和const&#xff1a;let和const声明的变量存在块级作用域&#xff0c;这…...

「Mac畅玩鸿蒙与硬件35」UI互动应用篇12 - 简易日历

本篇将带你实现一个简易日历应用&#xff0c;显示当前月份的日期&#xff0c;并支持选择特定日期的功能。用户可以通过点击日期高亮选中&#xff0c;还可以切换上下月份&#xff0c;体验动态界面的交互效果。 关键词 UI互动应用简易日历动态界面状态管理用户交互 一、功能说明…...

Leetcode581. 最短无序连续子数组(HOT100)

链接 我的代码&#xff1a; class Solution { public:int findUnsortedSubarray(vector<int>& nums) {vector<int> res nums;sort(res.begin(),res.end());int l 0,r nums.size()-1;while(nums[l]res[l]){l;if(lnums.size()){return 0;}}while(nums[r]res…...

HTML前端开发-- Flex布局详解及实战

引言 Flex布局&#xff0c;全称为Flexible Box Layout&#xff0c;是一种现代CSS布局技术&#xff0c;它提供了一种更有效的方式来设计响应式布局和复杂页面布局。本文将详细介绍Flex布局的基本概念、属性以及实战应用。 一、基本概念 Flex布局的核心是Flex容器&#xff08;…...

基于JWT跨语言开发分布式业务系统的挑战与实践:多语言协作的最佳方案

在现代分布式架构下&#xff0c;开发团队往往由来自不同技术栈和开发语言的工程师组成。如何有效地管理这些开发人员的协作&#xff0c;尤其是在实现跨语言的认证与授权机制时&#xff0c;成为了开发者面临的一个重大挑战。JSON Web Token&#xff08;JWT&#xff09;作为一种轻…...

AOP_青春版_VS_Pro版

背景&#xff1a;在javaweb和ssm中学习了面向切面编程的两种方式&#xff08;两种切点表达式不同&#xff09;&#xff0c;在苍穹外卖中&#xff0c;对于设置更新时间&#xff0c;创建时间&#xff0c;更新人&#xff0c;创建者为避免重复编码&#xff0c;将Update&Insert中…...

Agent 帮不了你,不是因为它不够聪明

上一篇我们分析了 CLI vs MCP 的争论本质上是在讨论"管道"&#xff0c;而真正缺的是"水龙头"。这篇继续往下挖&#xff1a;就算水龙头开了&#xff0c;你也大概率接不上。Agent 在现实中寸步难行的原因&#xff0c;比大多数人想的更结构化。 一个常见的许诺…...

全网薅羊毛新地图”:华莱士套餐实测13.9元起,连锁巨头麦当劳紧随其后!

近期&#xff0c;随着经济压力的加大&#xff0c;餐饮市场的竞争愈发激烈。在原本以低价策略闻名的麦当劳“穷鬼套餐”开始面临严峻挑战之际&#xff0c;一家曾被网友戏称为“穷鬼旗舰”的连锁快餐品牌——华莱士&#xff0c;悄然推出了更具性价比的“超值套餐”&#xff0c;在…...

5分钟部署MTools:功能强大的现代化工具,支持Windows/macOS/Linux

5分钟部署MTools&#xff1a;功能强大的现代化工具&#xff0c;支持Windows/macOS/Linux 1. 开箱即用的全能工具集 MTools是一款真正实现"下载即用"的现代化桌面工具集&#xff0c;它集成了图片处理、音视频编辑、AI智能工具和开发辅助四大核心功能模块。不同于需要…...

【RK3588 NPU性能调优实战】多线程异步推理YOLOv5,榨干6TOPS算力

1. 为什么你的RK3588 NPU跑不满6TOPS&#xff1f; 第一次在RK3588上跑YOLOv5时&#xff0c;我也被官方宣称的6TOPS算力唬住了。直到亲眼看到npu-smi显示的实际利用率——好家伙&#xff0c;不到30%&#xff01;这就像买了辆跑车却只能挂一档开。经过两周的折腾&#xff0c;终于…...

DAMO-YOLO实战:用AI视觉系统做内容安全审核与统计

DAMO-YOLO实战&#xff1a;用AI视觉系统做内容安全审核与统计 1. 引言&#xff1a;当AI视觉遇见内容安全 在数字内容爆炸式增长的今天&#xff0c;如何高效地进行内容审核成为许多平台面临的挑战。传统人工审核不仅效率低下&#xff0c;而且容易因疲劳导致误判。本文将介绍如…...

编译原理实战:5分钟搞定词法分析器的选择题(含答案解析)

编译原理实战&#xff1a;词法分析器选择题高效解题指南 在编译原理的学习和考试中&#xff0c;词法分析器相关选择题往往是考察重点&#xff0c;也是许多同学容易失分的部分。面对复杂的正规式、有限自动机等概念&#xff0c;如何快速准确地做出判断&#xff1f;本文将带你深入…...

如何快速掌握React Email Editor:深入理解拖拽邮件编辑器的实现原理

如何快速掌握React Email Editor&#xff1a;深入理解拖拽邮件编辑器的实现原理 【免费下载链接】react-email-editor Drag-n-Drop Email Editor Component for React.js 项目地址: https://gitcode.com/gh_mirrors/re/react-email-editor React Email Editor是一个功能…...

如何实现ElasticHQ与ElasticSearch 8.x的完美兼容:未来就绪的监控解决方案

如何实现ElasticHQ与ElasticSearch 8.x的完美兼容&#xff1a;未来就绪的监控解决方案 【免费下载链接】elasticsearch-HQ Monitoring and Management Web Application for ElasticSearch instances and clusters. 项目地址: https://gitcode.com/gh_mirrors/el/elasticsearc…...

Easy-Scraper:用 Rust 重新定义网页数据采集的效率边界

Easy-Scraper&#xff1a;用 Rust 重新定义网页数据采集的效率边界 【免费下载链接】easy-scraper Easy scraping library 项目地址: https://gitcode.com/gh_mirrors/ea/easy-scraper 当你需要从网页中提取数据时&#xff0c;是否遇到过这些困境&#xff1a;写了 200 行…...