go语言数据库相关 | 青训营笔记

73 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 7 天

go标准库中定义数据库相关操作的接口是用database/sql包,然后再用不同的关系型数据库的驱动包进行操作,比如说常用的mysql驱动包"github.com/go-sql-driver/mysql",今天主要学习数据库相关的包以及GORM相关的知识

golang数据库相关

标准库使用方法

以下介绍database/sql包的使用方法

1、导入相关包

例如我们需要使用mysql操作数据库,示例代码如下:
import(
    "database/sql"
    "github.com/go-sql-driver/mysql"
)

2、创建连接

使用driver+DSN初始化DB连接,示例代码如下:
db,err := sql.Open("mysql","user:password@tcp(127.0.0.1:3306)/hello) 

3、执行查询

执行一条sql,使用rows承接返回的数据,处理完后注意释放链接
rows,err := db.Query("select id,name from users where id = ?",1) 
if err != nil {
    //相关逻辑代码
}
defer rows.Close()

4、对返回的数据进行处理

这里其实就和JDBC的感觉差不多,就不贴具体的代码了

5、错误处理

最后需要注意一下错误处理的逻辑

GORM

<h3>设计原理</h3>   
GORM与应用程序直接交互,介于database/sql包与应用程序之间。在GORM中,go代码中的数据库操作相关语句,我们将其称为GORM STATEMENT,可将gorm statement分为chain method和finisher method两个部分,GORM API添加Clauses至gorm statement,gorm finisher方法执行gorm statement,然后通过自定义Builder,扩展子句等来生成sql

GORM的主要风格是链式调用,跟Builder设计模式差不多,通过串联堆起一个SQL语句。之前说到finisher方法,finisher方法通过决定statement类型,执行callbacks,生成sql并执行,callbacks的模式有六种,Create,Query,Update,Delete,Row,Raw

总结

数据库相关接口操作的使用是开发中必须的部分,在go语言中只使用database/sql中的方法很多时候需要自己重复封装使用,我们可以选择使用时下流行的一些框架进行相关逻辑处理,如GORM就是很好的选择