本次主要讲述了Go如何操作Mysql,如何进行增删改查,最后还讲了以下什么是事物,如何操作事物。

前言

通常情况下,我们程序员和数据库打交道是最多的。要然我们怎么会被称为码农呢。

存用户信息需要数据库,存订单需要数据库,等等等等,现在真是数据驱动着发展。

但是数据库种类有很多,有Mysql,Oracle,SQL Server。

本篇就示例如何Go操作Mysql。

准备工作

本次使用的是go mod进行包依赖管理,还不会使用的向上爬梯子,找go mod用法。

使用的库是第三方库go-sql-driver/mysql。

准备工作之连接数据库

代码

注意

  • sql.Open只会验证格式是否正确,不会连接数据库。
  • db.Close在err之后,是因为可能打开不成功,关闭一个没有打开的连接。
  • db.Ping会连接数据库,判断用户,密码,ip地址,端口是否正确。

准备工作之创建表

我们创建一个简单的用户表。

准备工作之创建结构体

假设上述工作都完成了啊。

不知道有没有想过,我们查询的数据,存成啥?,字符串?map?切片?,似乎都不是太好。

只有结构体是最清晰的,最好认识的。

结构体

查询单条

单条查询使用QueryRow方法。

代码

执行结果

查询多条

多行查询使用Query。

代码

执行结果

插入数据

插入数据需要用到Exec。

代码

执行结果

Mysql

更新数据

更新和添加差不多,用的都是Exec。

代码

执行结果

Mysql

删除数据

删除数据用的还是Exec。

代码

执行结果

Mysql

事物

事物,这个用的就比较多了,通常用在关键的场景。

尤其是转账,张三-10块,李四+10块,这个动作动作是要在一起完成的。

如果任何一个失败了,就要恢复上一次的状态。

我们通常也叫这个操作叫做原子操作,要成功,都成功,要完蛋,都完蛋。

新建表

表数据

张三和李四都剩余100块

Go Mysql 关于事物相关方法

Go 关于事物有三个方法

  • Begin()开始事物。
  • Commit()提交事物。
  • Rollback()失败回滚。

模拟转账:张三-10块,李四+十块

代码

执行结果

Mysql

一加一减

假如出错了

Mysql

如果使用事物,出错了数据还是没变。

总结

本次主要讲述了Go如何操作Mysql,如何进行增删改查,最后还讲了以下什么是事物,如何操作事物。

当然,这种是最原始的方法,过程有些繁琐,了解入门就好,后面还有更方便的方法。

往期精彩