美文网首页
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