美文网首页
go语言的sqlx库的使用

go语言的sqlx库的使用

作者: 梁帆 | 来源:发表于2021-04-01 09:53 被阅读0次

一、连接数据库

sqlx库连接数据库

对比sql库的初始化:

sql库连接数据库

发现sqlx库的相当于是把sql库的Open方法、Ping方法结合到了一个Connect方法中。

二、增删改查

需要注意的是,我们定义的user结构体中字段名称的首字母都需要大写,因为db.Get()方法是其他包中的。这里也要注意db.Get()方法中需要传结构体的指针。

三、NameExec()方法

有时候如果sql语句中的占位符过多,后面我们传参容易传错。因此有个准确度高的方法如下:

NameExec()方法

即现在sql语句中用":变量名"的方式替代原来的"?"占位符,之后调用NameExec()方法传入map类型的参数,有准确的对应关系,以防止出错。

四、sqlx.In()方法

sqlx.In()是sqlx提供的一个非常方便的函数。

1、绑定变量

查询占位符"?"在内部称为bindvars(查询占位符),它非常重要。你应该始终使用它们向数据库发送值,因为它们可以防止SQL注入攻击。database/sql不尝试对查询文本进行任何验证;它与编码的参数一起按原样发送到服务器。除非驱动程序实现一个特殊的接口,否则在执行之前,查询是在服务器上准备的。因此bindvars是特定于数据库的:

MySQL中使用?

PostgreSQL使用枚举的$1$2等bindvar语法

SQLite中?$1的语法都支持

Oracle中使用:name的语法

bindvars的一个常见误解是,它们用来在sql语句中插入值。它们其实仅用于参数化,不允许更改SQL语句的结构。例如,使用bindvars尝试参数化列或表名将不起作用:

一些错误使用

2、自己拼接语句实现批量插入

3、使用sqlx.In实现批量插入

相关文章

网友评论

      本文标题:go语言的sqlx库的使用

      本文链接:https://www.haomeiwen.com/subject/rqsohltx.html