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)皆可。

创建数据库

gorm的基本操作指南_第1张图片
生成的表的数据结构如下:
gorm的基本操作指南_第2张图片
但是我声明了autoIncrement,并不会自增,emmm,auto_increment和auto increment都尝试过了。
gorm的基本操作指南_第3张图片
gorm官方文档
对于gorm,会把错误通过Error参数返回,而Find()、Create()函数返回的是*gorm.db,需要注意:
gorm的基本操作指南_第4张图片

表名字的问题

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,之后重启数据库:
gorm的基本操作指南_第5张图片
右键“此电脑”,选择管理,之后再选择服务,然后找到mysql,右键该条目进行重启服务:
gorm的基本操作指南_第6张图片
之后重新进入数据库命令行界面,输入status,显示如下:
gorm的基本操作指南_第7张图片
然后链接的时候,也指定了utf8,本以为万无一失:
在这里插入图片描述
但结果:
gorm的基本操作指南_第8张图片
在命令行中还是乱码,这就很奇怪了,我就试了各种格式,各种改数据库配置文件,还是出错,后来在查看命令行的结构的时候发现了问题:
gorm的基本操作指南_第9张图片
命令行是GBK的格式,所以显示UTF-8的内容必然是乱码的,但是你从程序里取数据据就可以了:
gorm的基本操作指南_第10张图片
###参考:
不小心都被我关了,找不到参考文献了。。。

你可能感兴趣的:(go,go语言,mariadb,数据库)