Gorm 单表操作 插入数据

创建表AutoMigrate,并且插入数据db.Create  

package mainimport ("fmt""gorm.io/driver/mysql""gorm.io/gorm"
)type Student struct {ID     uint   `gorm:"size:3"`Name   string `gorm:"size:3"`Age    int    `gorm:"size:3"`Gender boolEmail  *string `gorm:"size:32"`
}func main() {dsn := "root:7PXjAkY!&nlR@tcp(192.168.11.128:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{})db.AutoMigrate(&Student{})email := "123@qq.com"//添加记录,实例化结构体s1 := &Student{Name:   "lu",Age:    21,Gender: true,Email:  &email,}err := db.Debug().Create(s1).Errorfmt.Println(err)}[4.019ms] [rows:1] INSERT INTO `students` (`name`,`age`,`gender`,`email`) VALUES ('lu',21,true,'123@qq.com')
<nil>

如果将name和email去注释掉,可以看到string类型的是空字符串,另外一个*string类型的是null。所以email的值可以是Email: nil

	//email := "123@qq.com"//添加记录,实例化结构体s1 := &Student{//Name:   "lu",Age:    21,Gender: true,//Email:  &email,}[3.829ms] [rows:1] INSERT INTO `students` (`name`,`age`,`gender`,`email`) VALUES ('',21,true,NULL)mysql> select * from students;
+----+------+------+--------+------------+
| id | name | age  | gender | email      |
+----+------+------+--------+------------+
|  1 | lu   |   21 |      1 | 123@qq.com |
|  2 |      |   21 |      1 | NULL       |
+----+------+------+--------+------------+

虽然结构体中没有插入ID的值,但是会在结构体当中生成这个值。

	s1 := &Student{//Name:   "lu",Age:    21,Gender: true,Email:  nil,}err := db.Debug().Create(s1).Errorfmt.Printf("%#v \n", s1)[3.833ms] [rows:1] INSERT INTO `students` (`name`,`age`,`gender`,`email`) VALUES ('',21,true,NULL)
&main.Student{ID:0x5, Name:"", Age:21, Gender:true, Email:(*string)(nil)} 

有两个地方需要注意:

1.指针类型是为了更好的存NULL类型,但是传值的时候,也记得传指针

2.Create按收的是一个指针,而不是值

由于我们传递的是一个指针,调用完Create之后,student这个对象上面就有该记录的信息了,如创建的id

批量插入:需要准备切片或者数组,这里create要传入切片的指针

package mainimport ("fmt""gorm.io/driver/mysql""gorm.io/gorm"
)type Student struct {ID     uint   `gorm:"size:3"`Name   string `gorm:"size:3"`Age    int    `gorm:"size:3"`Gender boolEmail  *string `gorm:"size:32"`
}func main() {dsn := "root:7PXjAkY!&nlR@tcp(192.168.11.128:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{})db.AutoMigrate(&Student{})var studentList []Studentfor i := 0; i < 10; i++ {studentList := append(studentList, Student{Name:   fmt.Sprintf("f%d", i),Age:    21 + i,Gender: true,Email:  nil,})db.Create(&studentList)}slist := []Student{{Name: "cc", Age: 23, Gender: true, Email: nil},{Name: "xx", Age: 24, Gender: false, Email: nil},}db.Create(&slist)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/10043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JDBC的的使用

首先导入jar包。 https://downloads.mysql.com/archives/c-j/ package com.test.sql;import java.sql.*;public class StudySql {public static void init() throws SQLException {Statement stmt null;Connection conn null;ResultSet res null;PreparedStatement pstm…

微信小程序生成二维码(weapp-qrcode)可添加logo

插件 npm 地址&#xff1a;https://www.npmjs.com/package/weapp-qrcode 插件 GitHub 地址&#xff1a;https://github.com/yingye/weapp-qrcode/tree/master 一、引入 1、根据 GitHub 指引将 weapp-qrcode 放到本地 uitl 文件夹下&#xff1b; 2、创建 canvas <canvas c…

自动化运维工具—Ansible概述

Ansible是什么&#xff1f; Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可以实现。 Ansible能批量配置、部署、…

CTFshow web入门 爆破

web21 bp 攻击模块的迭代器 输入账号密码 抓包 发现下面存在一个base64编码 我输入的是 123 123 发现就是base加密 账号 密码 那我们怎么通过intruder模块 自动变为 base64呢 然后去payload------>custom iterator(自定义迭代器) 位置1导入admin 因为是 账号:密码 这…

微服务远程调用openFeign简单回顾(内附源码示例)

目录 一. OpenFeign简介 二. OpenFeign原理 演示使用 provider模块 消费者模块 配置全局feign日志 示例源代码: 一. OpenFeign简介 OpenFeign是SpringCloud服务调用中间件&#xff0c;可以帮助代理服务API接口。并且可以解析SpringMVC的RequestMapping注解下的接口&#x…

win 安装虚拟机 再安装macos

0 视频教程 windows虚拟机一键安装苹果系统macos&#xff0c;轻松拥有xcode环境_哔哩哔哩_bilibili在windows环境下vmware虚拟机一键安装macos Catalina10.15.7苹果系统&#xff0c;帮助学习ios编程的朋友们实现xcode环境。文字教程&#xff1a;https://www.dhzy.fun/archives…

Prometheus 的应用服务发现及黑河部署等

目录 promtool检查语法 部署Prometheus Server 检查语法是否规范 部署node-exporter 部署Consul 直接请求API进行服务注册 使用register命令注册服务&#xff08;建议使用&#xff09; 单个和多个注册&#xff0c;多个后面多加了s 在Prometheus上做consul的服务发现 部署…

IL汇编字符串连接

在此实现了一个基本的IL汇编程序&#xff1b; 了解MSIL汇编和IL汇编评估堆栈_bcbobo21cn的博客-CSDN博客 它用了下面两句来在屏幕输出字符串&#xff0c; ldstr "I am from the IL Assembly Language..." call void [mscorlib]System.Console::WriteLine (string) …

粒子群算法的多线程并行计算(python)

前言&#xff1a;我又从仓库里面翻出来了2020年写的一篇博文&#xff0c;作为我无知青葱岁月的留影。 粒子群算法求解多配送中心的车辆调度优化问题&#xff08;python3&#xff09; 紧接上一篇文章《遗传粒子群 求解多配送中心车辆调度问题&#xff08;python&#xff09;》…

用i18next使你的应用国际化-React

ref: https://www.i18next.com/ i18next是一个用JavaScript编写的国际化框架。 i18next为您提供了一个完整的解决方案&#xff0c;本地化您的产品从web端到移动端和桌面端。 在react项目中安i18next依赖&#xff1a; i18nextreact-i18nexti18next-browser-languagedetector&…

Spring(二):更简单的存储与读取 Bean

通过上一章的Spring&#xff0c;我们基本实现了Spring 的读取与存储&#xff0c;但是在操作过程中&#xff0c;读取与存储并没有那么得“简单” 一套流程还是很复杂&#xff0c;所以&#xff0c;本章来介绍更加简单得读取与存储。 在 Spring 中想要更简单的存储和读取对象的核…

mysql通过binlog恢复数据

开启binlog 在my.ini中添加以下两行代码&#xff1a; log-binmysql-binserver-id1 注意要写在[mysqld]范围内才会生效 查看binlog存放日志文件目录 show variables like %datadir%; 查看binlog文件名 show master logs; 将binlog转换成sql mysqlbinlog --no-defaults --bas…

【LeetCode热题100】打卡第42天:滑动窗口最大值搜索二维矩阵II

文章目录 【LeetCode热题100】打卡第42天&#xff1a;滑动窗口最大值&搜索二维矩阵II⛅前言 滑动窗口最大值&#x1f512;题目&#x1f511;题解 搜索二维矩阵II&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第42天&#xff1a;滑动窗口最大值&搜索二维…

SpringMVC程序开发

1.什么是Spring MVC? Spring Web MVC是基于Servlet API构建的原始的Web框架&#xff0c;从一开始是就包含在Spring框架中。它的正式名称“Spring Web MVC"来自其源模板的名称&#xff08;Spring-webmvc)&#xff0c;但通常被称为“Spring MVC" 从上述的定义我们可…

[visionOS][Apple Vision Pro] 缩放3D模型

方法一&#xff1a;通过代码来设置Model3D Model3D(named:"你的3D模型名称",bundle:realityKitContentBundle).padding(.bottom,50).scaleEffect(0.2) //这句用来缩放 方式二&#xff1a;别人可以&#xff0c;我验证过不行的方法 RealityKitContent工具中&#xf…

PLC-Recorder的高速采集有多快?0.5ms算快吗?看控制器能力了!

大家知道&#xff0c;PLC-Recorder有一个高速采集的功能&#xff0c;基于TCP连接或UDP报文&#xff0c;速度取决于发送端的能力。对于西门子PLC&#xff0c;能做到1-2ms的采集速度&#xff0c;但是&#xff0c;我在前面的文章里提到了0.5ms的高速采集&#xff0c;哪个控制器能这…

Linux 下 nc 发送接收 udp、tcp数据

nc&#xff0c;全名叫 netcat&#xff0c;它可以用来完成很多的网络功能&#xff0c;譬如端口扫描、建立TCP/UDP连接&#xff0c;数据传输、网络调试等等&#xff0c;因此&#xff0c;它也常被称为网络工具的 瑞士军刀 。 一、只服务端使用nc 备注&#xff1a;这种方式只能发…

49:字符串的新增方法

字符串的新增方法 String.fromCodePoint()String.raw()实例方法&#xff1a;codePointAt()实例方法&#xff1a;normalize()[实例方法&#xff1a;includes(), startsWith(), endsWith()](https://es6.ruanyifeng.com/#docs/string-methods#实例方法&#xff1a;includes(), s…

Django实现音乐网站 ⑴

使用Python Django框架制作一个音乐网站。 目录 网站功能模块 安装django 创建项目 创建应用 注册应用 配置数据库 设置数据库配置 设置pymysql库引用 创建数据库 创建数据表 生成表迁移文件 执行表迁移 后台管理 创建管理员账户 启动服务器 登录网站 配置时区…

自媒体必备的8个素材网站,视频、音效、图片全部免费下载

自媒体必备的视频、音效、图片素材&#xff0c;这8个网站帮你解决。赶紧马住&#xff01; 菜鸟图库 https://www.sucai999.com/video.html?vNTYwNDUx 菜鸟图库虽然是一个设计网站&#xff0c;但它还有非常丰富的视频和音频素材&#xff0c;视频素材全部都是高清无水印&#…