gorm的基本操作指南
gorm之CURD基本操作
- 导言
- 链接数据库
- 创建数据库
- 表名字的问题
- 令人纠结的字符编码
导言
倒腾了一上午终于简简单单的完成了增删改查,查了很多帖子,总是和自己想要的不一样,希望自己的可以精辟一些
链接数据库
链接数据库的形式:
db, err := gorm.Open(“mysql”, “root:0402@(localhost)/test?charset=utf8&parseTime=True&loc=Local”)
if err != nil {
fmt.Println(“我出错啦”)
panic(err)
}`
首先需要明确的是Open(“mysql”, “用户名:密码@/数据库名?charset=字符集”),其中@之后的内容可写可不写,但是@一定要存在,@(localhost),@tcp(localhost),@tcp(localhost:3306)皆可。
创建数据库
生成的表的数据结构如下:
但是我声明了autoIncrement,并不会自增,emmm,auto_increment和auto increment都尝试过了。
gorm官方文档
对于gorm,会把错误通过Error参数返回,而Find()、Create()函数返回的是*gorm.db,需要注意:
表名字的问题
gorm默认是表名是复数形式,逻辑上很好理解。但是我一开始创建的表名叫"friend",但是下面这段代码,执行起来就是false:
if db.HasTable(&Friend{}){fmt.Println("该表不存在")}
后来查证发现,可以通过手动更改,使用单数名称的表的形式:
//设置单一表db.SingularTable(true)if !db.HasTable(&Friend{}){//当表不存在时,创建表,Set函数是这是表的各种属性db.Set("gorm:table_options", "CHARSET=utf8").AutoMigrate(&Friend{})}
令人纠结的字符编码
我用的是windows系统、maria db,众所周知是gbk格式,但是golang是utf-8格式,所以插进去的时候是乱码的。所以需要手动改一下数据库的配置文件,以我的数据库为例:在C:\Program Files\MariaDB 10.3\data的my.ini文件增加5、6、8、12,无非就是改变数据库之前的编码格式为utf8,之后重启数据库:
右键“此电脑”,选择管理,之后再选择服务,然后找到mysql,右键该条目进行重启服务:
之后重新进入数据库命令行界面,输入status,显示如下:
然后链接的时候,也指定了utf8,本以为万无一失:
但结果:
在命令行中还是乱码,这就很奇怪了,我就试了各种格式,各种改数据库配置文件,还是出错,后来在查看命令行的结构的时候发现了问题:
命令行是GBK的格式,所以显示UTF-8的内容必然是乱码的,但是你从程序里取数据据就可以了:
###参考:
不小心都被我关了,找不到参考文献了。。。
gorm的基本操作指南相关推荐
- 叛乱联机服务器未响应,叛乱沙漠风暴怎么开服 叛乱沙漠风暴开服操作指南详解 安装准备-游侠网...
叛乱沙漠风暴怎么开服?游戏一款多人联机操作游戏,在开服前期要做好相应的准备工作,也就是设置一些选项,这里给大家带来了"xudong162"分享的叛乱沙漠风暴开服操作指南详解,详情一 ...
- oracle读书笔记之Oracle 11g R2 DBA操作指南(前三章)
Oracle 11g R2 DBA操作指南是我学习的第一本讲述oracle数据库知识的书籍,在此记录下自己的学习笔记,对于书中的知识点本人通过实际操作进行验证. 1.Oracle数据库基础 1.1.关 ...
- tcp转串口_PROFIBUS DP与Modbus/TCP网络转换操作指南
>>PROFIBUS DP转Modbus/TCP网关操作指南 摘要: 本文以NT100-RE-DP网关为例,实现Modbus/TCP Client与PROFIBUS DP设备间的通讯,从而 ...
- GitHub使用教程详解——官网操作指南(翻译)
GitHub使用教程详解--官网操作指南(翻译) GitHub使用指南 原文地址:GitHub官网 示例项目:Hello World 十分钟轻松教学 在学习计算机语言编程的过程中创建Hello Wor ...
- Grails GORM查询总结
GORM绝对是Grails框架的一大亮点.GORM基于Hibernate的ORM之上做二次封装,既有Hibernate强大的功能,又有使用简便的特点.本篇主要总结和类比在项目开发中用到的GORM查询方 ...
- 拨号到公司网络操作指南
拨号到公司网络操作指南 转载于:https://blog.51cto.com/itlingm/399066
- 最快捷的Linux命令查询工具来了:「我该怎么做XX」,一句话自动返回操作指南...
贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 无论你是Linux萌新用户还是老司机,使用命令行总会遇到不懂的问题. 遇到问题要么去论坛询问.谷歌搜索,要么查自带命令手册(RTFM),过 ...
- Go 语言编程 — gormigrate GORM 的数据库迁移助手
目录 文章目录 目录 前言 gormigrate 核心结构体 实现分析 版本定义 InitSchema Migration 版本记录(历史) 版本升级和回退 前言 GORM v2 gormigrate ...
- Go 语言编程 — gorm 数据库版本迁移
目录 文章目录 目录 前言 AutoMigrate 示例 Migrator 接口(DDL 操作方法) 表操作 列操作 约束操作 索引操作 数据库版本控制 参考文档 前言 本文示例为 GORM V2.0 ...
最新文章
- Java中几个常见的关键字
- bootstrap 冻结表格,冻结表头
- free查看可用缓存
- matlab 行 读取文件 跳过_用Matlab处理LAS点云(1)——LAS文件概述
- magento effects.js jquery.lazyload.js 冲突
- 第10-11讲 后端
- 【zz】Matlab 二值图像形态学函数 bwmorph
- javascript arguments(转)
- Java程序编译及打包
- CSDN-Markdown语法集锦
- Pygame 入门基本指南
- 民数记研读1——于宏洁
- JAVA删除pdf空白页_如何从iText中的PDF中删除空白页面
- VMware Workstation 与 Device/Credential Guard 不兼容解决方案
- css3实现0.5px边框、圆角渐变色边框+圆角渐变色背景
- Linux-Systemd服务配置文件详解
- 对角线用计算机怎么算,显示器对角线尺寸与厘米英寸分辨率在线转换关系
- Flink project java篇
- 直播平台源码,vue 写搜索效果
- 桥田快换产品在超声波焊接工艺的应用
热门文章
- 移动云计算和云计算有什么区别?
- 信号归一化功率_大功率集总参数衰减器的稳定性分析
- FIL WORLD算力众筹助推Filecoin生态落地
- Golang 打印耗时统计、纳秒级耗时统计(统计函数执行时间)
- UserDetails与UserDetailsService详解
- 实操 ----Mocap采集VIO数据集
- GraphicsLab Project之辉光(Glare,Glow)效果
- 蓝桥杯嵌入式RTC闹钟
- 【stm32 IAP-APP跳转学习记录】代码少一“点“,调试大半天
- GAN生成对抗网络论文翻译(二)