这是我参与「第五届青训营」伴学笔记创作活动的第 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
GORM的主要风格是链式调用,跟Builder设计模式差不多,通过串联堆起一个SQL语句。之前说到finisher方法,finisher方法通过决定statement类型,执行callbacks,生成sql并执行,callbacks的模式有六种,Create,Query,Update,Delete,Row,Raw
总结
数据库相关接口操作的使用是开发中必须的部分,在go语言中只使用database/sql中的方法很多时候需要自己重复封装使用,我们可以选择使用时下流行的一些框架进行相关逻辑处理,如GORM就是很好的选择