SQLX 库
sqlx是 Go 的软件包,它在出色的内置database/sql软件包的基础上提供了一组扩展。
该库兼容 sql 原生包,同时又提供了更为强大的、优雅的查询、插入函数。
该库提供四个处理类型,分别是:
- sqlx.DB - 类似原生的sql.DB;
- sqlx.Tx - 类似原生的sql.Tx;
- sqlx.Stmt - 类似原生的 sql.Stmt, 准备 SQL 语句操作;
- sqlx.NamedStmt - 对特定参数命名并绑定生成 SQL 语句操作。
提供两个游标类型,分别是:
- sqlx.Rows - 类似原生的 sql.Rows, 从 Queryx 返回;
- sqlx.Row - 类似原生的 sql.Row, 从 QueryRowx 返回。
安装 SQLX 库
| |
使用操作
连接数据库
| |
SetMaxOpenConns 和 SetMaxIdleConns 分别为设置最大连接数和最大空闲数。
数据表达及引用
在这里提前声明一个用户结构体 user,将 *sqlx.DB 作为一个全局变量使用,当然也要提前引用 MySQL 的驱动包,如下设计:
| |
查询操作
查询一行数据
查询一行数据使用 sqlx 库中的 Get 函数实现:
| |
dest 是用户声明变量接收查询结果,query 为查询 SQL 语句,args 为绑定参数的赋值。
| |
查询多行数据
而查询多行数据则使用的是Select 函数:
| |
使用 Select 函数进行查询的时候,需要先声明一个结构体数组接收映射过来的数据:
| |
插入、更新、删除操作
在 sqlx 库中,使用插入、更新、删除操作是和原生 sql 库实现是一致的,都是采用 Exec 函数来实现的:
插入操作
| |
更新操作
| |
删除操作
| |
参数绑定
在库中提供最常用的就是NamedQuery和NamedExec函数,一个是执行对查询参数命名并绑定,另一个则是对 CUD 操作的查询参数名的绑定:
NamedQuery
| |
NamedExec
| |
事务操作
使用Begin函数、Rollback函数及Commit函数实现事务操作:
| |
示例代码:
| |
开源项目
最后将此开源项目放在此处,大家要是感兴趣可以给这个开源项目一个 Star,感谢。
https://github.com/jmoiron/sqlx
